관리 메뉴

피터의 개발이야기

[Docker] Network 명령어 정리 본문

DevOps/Docker

[Docker] Network 명령어 정리

기록하는 백앤드개발자 2024. 5. 6. 10:02
반응형

ㅁ 들어가며

ㅇ 지난 글에서 [Docker] Network, 호스트와 컨테이너의 구조에서 도커의 기본적인 네트워크 구조를 정리해 보았다.

ㅇ 이번 글에서는 Docker Network를 사용하기 위한 기본적인 명령문을 정리해 보았다.

 

ㅁ 하위 명령어

명령 설명
docker network ls 네트워크 조회
docker network create 네트워크 만들기
docker network inspect 하나 이상의 네트워크에 대한 자세한 정보 표시
docker network connect 컨테이너를 네트워크에 연결
docker network disconnect 네트워크에서 컨테이너 연결 끊기
docker network rm 하나 이상의 네트워크 제거
docker network prune 사용하지 않는 모든 네트워크 제거

 

 

ㅁ 네트워크 조회

$ docker network ls

ㅇ Docker가 실행되면서 Driver 타입(bridge, host, null) 별로  bridge, host, none 네트워크를 기본 생성한다.

ㅇ 다른 나머지 네트워크는 맥북미니에서 현재 테스트로 생성한 것이다. 

 

ㅁ 네트워크 생성

$ docker network create my-net

 

ㅁ 네트워크 상세 정보

$ docker network inspect my-net                                                                                                                                                            ✔  8372  08:40:41
[
    {
        "Name": "my-net",
        "Id": "bc49516c6bdd136d8fdd99141d47fdb8612cc8629e3e087a0f9eb868333aaef0",
        "Created": "2024-05-04T23:40:41.795429881Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.22.0.0/16",
                    "Gateway": "172.22.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

 

ㅁ 네트워크 컨테이너 연결

# 실행 중인 컨테이너 연결을 위한 busybox 생성
$ docker run -itd --name=busybox busybox
Unable to find image 'busybox:latest' locally
latest: Pulling from library/busybox
c34182c7a03d: Pull complete
Digest: sha256:6776a33c72b3af7582a5b301e3a08186f2c21a3409f0d2b52dfddbdbe24a5b04
Status: Downloaded newer image for busybox:latest
4f2f4cfee6445136666732656bff4bfdb57627f9f69f91370e3488fe59291792

# busybox에 my-net 연결
$ docker network connect my-net busybox

# 연결확인
$ docker network inspect my-net | jq '.[0].Containers'
{
  "4f2f4cfee6445136666732656bff4bfdb57627f9f69f91370e3488fe59291792": {
    "Name": "busybox",
    "EndpointID": "1cb57652917719b8651691e1347baabff57fe79662a07094de3017cb20e6ef2b",
    "MacAddress": "02:42:ac:16:00:02",
    "IPv4Address": "172.22.0.2/16",
    "IPv6Address": ""
  }
}

 

ㅇ busybox가 my-net에 정상적으로 연결되었다.

 

ㅇ busybox는 컨테이너 생성 시 기본 bridge 네트워크에 연결된 상태이다.

ㅇ 이 네트워크에서 busybox를 제거해 보자.

 

ㅁ 네트워크 연결해제

$ docker network disconnect bridge busybox

 

ㅁ 네트워크 제거

# 네트워크에 연결된 컨테이너 정지
$ docker stop busybox
busybox

# 네트워크 삭제
$ docker rm my-net
my-net

ㅇ my-net을 제거하기 위해서는 연결된 컨테이너를 정지해야한다.

 

ㅁ 네트워크 정리

$ docker network prune
WARNING! This will remove all custom networks not used by at least one container.
Are you sure you want to continue? [y/N] y
Deleted Networks:
rocket_default
postgres_default
aged
jenkins-quick-start_default
mongodb_default
heyform_default

ㅇ 아무 컨테이너도 연결되지 않은 불필요한 네트워크를 한번에 정리할 수 있다.

 

 

ㅁ 함께 보면 좋은 사이트

docker network ls 

docker network create

docker network inspect

docker network connect

docker network disconnect

docker network rm

 

ㅇ docker network prune

반응형
Comments