Docker Basic

[Docker Basic] 13. Docker 기본 명령어 - 네트워크 명령 및 예시

Divine Providence 2020. 4. 13. 22:42

< 도커 기본 명령어 차례 >

● 시스템 명령

docker version

docker system info

docker system df

docker system prune

docker login

locker logout

 

● 이미지 관리 명령

docker pull

docker image ls

docker images

docker image inspect

docker image tag

docker push

docker search

docker image rm

docker image prune

docker container commit

 

● 컨테이너 실행 및 조작 관련 명령

docker container create

docker container run

docker container attach

docker container exec

 

● 컨테이너 정보 확인 명령

docker container ps

docker container stats

docker container inspect

docker container top

docker container port

docker container diff

docker container logs

docker container ls

 

● 컨테이너 관리 명령

docker container stop

docker container start

docker container kill

docker container restart

docker container prune

docker container pause

docker container unpause

docker container rename

docker container cp

 

● 컨테이너/이미지 백업 명령

docker container export

docker container import

docker image save

docker image load

 

● 네트워크 명령

docker network ls

docker network create

docker network connect

docker network disconnect

docker networkinspect

docker network rm

brctl show

 

● 볼륨 명령
docker volume create
docker volume ls
docker volume rm
docker volume prune
docker volume inspect


docker network ls

설명
- 도커의 네트워크 목록 표시

옵션
-f, --filter=[] : 출력을 필터링한다.
        driver : 드라이버 지정
        id : 네트워크 아이디
        label : 네트워크에 설정된 라벨 (label= 또는 label==로 지정한다
        name : 네트워크명
        scope : 네트워크의 스코프 (swarm, global, local)
        type : 네트워크의 타입 (사용자 정의 네트워크 custom/정의완료 네트워크 builtin)
--no-trunc : 상세 정보를 출력한다
--quiet, -q : 네트워크 id만 표시

예시

- 아래 내용은 다른 아무 네트워크도 생성하지 않은 기본 도커 설치 후의 내용이다.

9e2939a3e54e : bridge : docker0 가상 브릿지에 연결할 때 사용한다. (가상 브릿지를 추가하면 이러한 bridge Driver로 생성된다.

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

ebc9705adcd6 : none - 사용하지 않음.

 

 


docker network create

설명
- docker netework create 옵션 이름
- 사용자 정의의 도커 네트워크를 생성한다.
- 네트워크 생성 시 도커 네트워크 driver 또는 외부 네트워크 driver 플러그인을 사용해야 한다.
- 이러한 생성된 네트워크에 여러 도커 컨테이너가 연결되어 통신을 하게 된다.
- 이러한 네트워크에 컨테이너가 연결되면, 컨테이너는 ip뿐만 아니라 컨테이너명 또는 컨테이너ID로도 통신(ping 등)이 가능하다.
- 생성된 네트워크는 컨테이너 생성시 --net 옵션으로 해당 네트워크를 컨테이너에 추가할 수 있다. (docker container run 부분에서 상세히 설명)
- 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 : 다른 컨테이너에 대한 링크

예시

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 하나가 추가되는데, 거기에 더 추가할 수 있다. connect 명령을 사용한다. 

 

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

- 작업 후 컨테이너로 들어가서 다시 확인해보면 해당 네트워크 장치가 사라진 것을 확인할 수 있다.