docker network ls
---
NETWORK ID NAME DRIVER SCOPE
eed9d298c9cd bridge bridge local
5cedcb62cb1b host host local
77664d387571 none null local
docker inspect [컨테이너 ID]
---
...
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "eed9d298c9cd85abf1ec1eea1f5ec952d585ca680c28059258e8d8d2183a2f79",
"EndpointID": "7354ffd83d800907354d215623fb2b26dfe8ebabb2f82424a35dd314caa979cf",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:02",
"DriverOpts": null
}
}
}
}
]
docker network create \
--subnet=10.10.10.0/24 \
--gateway=10.10.10.1 \
new_bridge
docker network ls
명령어로 조회시 위에서 생성한 new_bridge
네트워크가 추가된 것을 확인할 수 있습니다.NETWORK ID NAME DRIVER SCOPE
eed9d298c9cd bridge bridge local
0aeb18a85fe5 new_bridge bridge local
5cedcb62cb1b host host local
77664d387571 none null local
hyunsoolee0506/nginx_network
이미지는 ping
명령어 사용이 가능하도록 기존의 nginx
이미지를 약간 커스텀한 이미지입니다.default
네트워크 컨테이너docker run -d \
--name default1 \
hyunsoolee0506/nginx_network
my_bridge
네트워크 컨테이너docker run -d \
--name my1 \
--network my_bridge
hyunsoolee0506/nginx_network
default1
컨테이너와 my1
컨테이너는 서로 다른 네트워크에 생성되어 있기 때문에 서로 통신이 불가능합니다.docker network connect
명령어를 통해 컨테이너에 특정 네트워크를 연결시킬 수 있습니다.default1
컨테이너에 my_bridge
컨테이너를 연결하면 default1
컨테이너와 my1
컨테이너는 통신이 가능해집니다.docker network connect [네트워크 이름] [컨테이너 이름]
docker network connect my_bridge default1
disconnect
명령을 사용하면 됩니다.docker network disconnect [네트워크 이름] [컨테이너 이름]
docker network disconnect my_bridge default1
-p 80:80
이런식으로 port forwarding을 해주지만, host 네트워크를 사용하면 해당 옵션 없이 서비스에 접속이 가능합니다.docker run -d \
--name nginx_host \
--network host \
nginx
[Compute Engine 외부 IP]:80
jupyter/base-notebook
이미지는 8888 포트가 expose 되어있어 -p 8888:8888
옵션과 함께 컨테이너를 생성하지만, Host 네트워크를 사용하는 상황에서는 역시 해당 옵션 없이 8888 포트의 서비스로 접속이 가능합니다.docker run -d \
--name jupyter_host \
--network host \
jupyter/base-notebook
[Compute Engine 외부 IP]:8888
exec
명령어를 통해 컨테이너 내부 터미널로의 접근은 가능하여 네트워크 없이 독립적으로 실행되어야 하는 작업이나 테스트용으로 적합합니다.hyunsoolee0506/file-generator
이미지는 컨테이너 생성시 내부에서 5초에 한 번씩 timestamp를 특정 파일에 기록하는 python 프로그램이 작동됩니다.docker run -d \
--name none_cnt \
--network none \
hyunsoolee0506/file-generator
docker exec -it none_cnt cat write_timestamp.txt
---
This file was created at 2025-01-10_15-41-33
This file was created at 2025-01-10_15-41-38
This file was created at 2025-01-10_15-41-43
This file was created at 2025-01-10_15-41-48
This file was created at 2025-01-10_15-41-53
This file was created at 2025-01-10_15-41-58
This file was created at 2025-01-10_15-42-03
...
Bridge
, Host
, None
네트워크에 대해 각각 실습을 통해 알아보았습니다. 일반적으로 Bridge 네트워크가 가장 많이 사용되는데, Docker에서 이러한 네트워크의 구성과 흐름을 이해하면 컨테이너 간 통신이나 외부 서비스에서 컨테이너로 접속이 필요한 상황에서도 혼란 없이 문제를 해결할 수 있을 거라 생각합니다.Docker Network 별 특징 정리