IT Technology/Cloud

Docker Network 기본 명령어

by빵수 2021. 3. 12. 13:07
728x90
반응형

Network 명령어 

 

#docker network ls 

#docker network create 

#docker network connect 

#docker network disconnect 

#docker networkinspect 

#docker network rm

#brctl show

 

 

 

docker network ls 

  • 도커 네트워크 목록 표시

옵션

-f, --filter=[   ] : 출력을 필터링한다. 

               driver : 드라이버 지정 

               id : 네트워크 아이디 

               label : 네트워크에 설정된 라벨 (label= 또는 label==로 지정한다 

               name : 네트워크명 

               scope : 네트워크의 스코프 (swarm, global,local) 

               type : 네트워크의 타입 (사용자 정의 네트워크 custom/정의완료 네트워크 builtin) 

 

--no-trunc : 상세 정보를 출력한다 

--quiet, -q : 네트워크 id만 표시

 

 

 

Ex)

 

다른 아무 네트워크도 생성하지 않은 기본 도커 설치 후 모습

 

 

ㆍ 9e2939a3e54e : bridge - docker0 가상 브릿지에 연결할 때 사용한다. 

 - 가상 브릿지를 추가하면 이러한 bridge Driver로 생성된다. 

ㆍcb84e2a80ad9 : host - 호스트 OS의 IP 대역과 동일하게 할 때 사용한다. 

ㆍebc9705adcd6 : none - 사용하지 않음.

 

 

docker network create

 

  • docker netework create [옵션] [이름] 
  • 사용자 정의의 도커 네트워크를 생성한다. 
  • 네트워크 생성 시 도커 네트워크 driver 또는 외부 네트워크 driver 플러그인을 사용해야 한다. 
  • 이러한 생성된 네트워크에 여러 도커 컨테이너가 연결되어 통신을 하게 된다. 
  • 이러한 네트워크에 컨테이너가 연결되면, 컨테이너는 ip뿐만 아니라 컨테이너명 또는 컨테이너 ID로도 통신(ping 등)이 가능하다. 
  • 생성된 네트워크는 컨테이너 생성시 --net 옵션으로 해당 네트워크를 컨테이너에 추가할 수 있다. 
  • driver 중에서, 오버레이 네트워크나 커스텀 플러그인을 사용하면, 멀티 호스트에 대한 연결을 할 수 있다. (즉, 도커 서버가 여러 대라는 의미 – 도커 스웜, 쿠버네티스 등 오스트레이션 툴에서 사용됨) 
  • 컨테이너가 동일한 멀티호스트 네트워크에 연결되어 있으면 이 네트워크를 통해서 서로 통신이 가능하다.

 

옵션

 

--driver, -d : 네트워크 브리지 또는 오버레이(기본값은 bridge) - overlay, bridge 두 가지. 

                 또한 커스텀 네트워크 드라이버도 사용 가능. 

--ip-range : 컨테이너에 할당하는 ip 주소의 범위를 지정 

--subnet : 서브넷을 CIDR형식으로 지정 

--ipv6 ipv6 : 네트워크를 유효화할지 말지(true/false) 

-label : 네트워크에 설정하는 라벨.

 

브릿지 네트워크를 새로 생성

 

docker network connect

 

  • 도커 컨테이너를 도커 네트워크에 연결할 때 사용 
  • docker network connect [옵션] [네트워크] [컨테이너] 
  • 생성할 때가 아닌, 이미 생성된 컨테이너에 특정 네트워크를 추가하는 것 
  • 연결 후에는 해당 컨테이너 내부에 새로운 네트워크 장치가 생기며, 동일한 네트워크상에 있는 다른 컨테이너와 통신이 가능해진다. 
  • docker container inspect 컨테이너명에서 web-network 항목에서 정보 확인 가능.

 

옵션

--ip : ipv4주소 

--ip6 : ipv6주소 

--alias : 알리아스명 

--link : 다른 컨테이너에 대한 링크

 

Ex)

 

docker network connect web-network webfront (webfront라는 컨테이너를 web-network라는 네트워크에 연결)

 

 

docker network disconnect

 

  • 도커 컨테이너안에 연결된 특정 네트워크를 해제한다.
  • docker network disconnect 옵션 네트워크 컨테이너

 

docker network inspect

 

  • 네트워크의 상세정보 보기
  • docker network inspect [옵션] [네트워크명]
  • 네트워크 드라이버, 서브넷, 게이트웨이 등등의 정보가 나오며,
  • Container 부분 아래에는 해당 네트워크에 연결된 컨테이너들의 정보가 나온다.

 

 

docker network rm

 

  • 생성한 도커 네트워크를 삭제한다. 
  • docker network rm 옵션 네트워크명
  • 네트워크를 삭제하려면, 이 네트워크에 연결된 모든 컨테이너와의 연결을 해제해야 한다. (disconnect 명령 사용)

 

brctl show

 

  • 브릿지 확인하는 명령어. 따로 설치해야 한다. 
  • 설치 : 우분투 apt-get -y install bridge-utils
  • 설치 : 레드햇 yum install bridge-utils

 

 

도커 네트워크 연결 연습

 

* 새로운 브릿지 네트워크를 생성하고 생성한 네트워크를 사용하여 컨테이너 생성하기

 

1. 브릿지 네트워크 새로 생성

 

설정 없이 기본값으로 만들기 

#docker network create -d bridge noset-network

 

상세 설정하여 만들기

#docker network create --driver bridge --subnet 172.100.1.0/24 --ip-range 172.100.1.0/24 --gateway=172.100.1.1 set-network

 

 

2. 생성 후 NETWORK ID 확인

 

 

 

3. ip a 명령으로 생성된 정보를 확인할 때 위의 NETWORK ID로 해당 도커 네트워크 장치를 확인할 수 있다.

 

 

4. 설정된 상세 정보를 확인한다.

 

 

5. 컨테이너 생성

 

#docker container run --net=set-network -it centos

 

 

 

* 컨테이너에 네트워크 장치 추가하기

 

컨테이너를 생성하면 네트워크가 eth0 하나가 추가되는데, 거기에 더 추가할 수 있다.

 

1. 컨테이너 생성 및 네트워크 확인

 

#docker run -it --name=add_network centos bash

 

- eth0/if148 한개가 있는 것을 확인할 수 있다.

 

2. 새로운 도커 브릿지 네트워크 생성

 

#docker network create --driver=bridge second-network

 

호스트에서 docker network ls 명령으로 NETWORK ID를 확인
ip a 명령으로 해당 네트워크의 ip 대역대를 확인할 수 있다

 

3. connect 명령으로 새로 만든 브릿지 네트워크를 추가한다.

 

#docker network connect second-network add_network

 

 

4. attach로 컨테이너로 들어간 후 확인해본다.

 

#docker attach add_network

 

- 새로운 네트워크인 eth1@if153이 추가된 것을 확인할 수 있다.

 

 

5.  추가된 네트워크 삭제 하기.

 

  • 컨테이너에 특정 네트워크가 추가된 상태에서, 해당 네트워크를 삭제하려고 하면 에러가 발생한다.
  • 따라서 컨테이너를 중지하던지 연결을 해제해 주어야 한다.
  • 이 작업은 컨테이너 온라인 중 가능하다. 명령을 치면 바로 작동된다. ->테스트해볼 것
  • 작업 후 컨테이너로 들어가서 다시 확인해보면 해당 네트워크 장치가 사라진 것을 확인할 수 있다.

#docker network disconnect second-network add_network

반응형