docker network?
- 컨테이너가 서로 연결하고 통신하거나 Docker가 아닌 워크로드와 통신할 수 있는 기능
- Docker의 네트워킹 하위 시스템은 드라이버를 사용하여 플러그형으로 연결
docker network driver 종류와 사용 예제
bridge
- 기본 네트워크 드라이버
- 동일한 브리지 네트워크에 연결된 컨테이너들이 통신할 수 있도록 하는 동시에 해당 브리지 네트워크에 연결되지 않은 컨테이너들과 격리
bridge 네트워크 설정 및 사용 예제
$ docker network create my-bridge
- my-bridge 이름의 브릿지 네트워크 생성
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
de9c8e373986 bridge bridge local
- 도커 네트워크 목록 확인
$ docker network inspect my-bridge
[
{
"Name": "my-bridge",
"Id": "8e1b132eb066fb9b143edad8e72fc04e4ffd335227005e2ccc885ce31811b40a",
"Created": "2025-04-15T05:48:15.075292759Z",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.18.0.0/16",
"Gateway": "172.18.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"49c0db95eb0d8069e5b2dfcfb431a4670bc763b347b07fe8cf7ab092338b4b38": {
"Name": "container2",
"EndpointID": "fed67438d8ca789eda63b5c394323e33f942147cc48bf934180ba8f2c6ff5939",
"MacAddress": "02:42:ac:12:00:03",
"IPv4Address": "172.18.0.3/16",
"IPv6Address": ""
},
"d499eb01fec62647d3fe3b87565bdb60bc7bc40fdcaa986aee3c7a9427659ef9": {
"Name": "container1",
"EndpointID": "0f664af14246c6729df37200ca7bf1046ba61396434ee8801cad47f4ed33c77f",
"MacAddress": "02:42:ac:12:00:02",
"IPv4Address": "172.18.0.2/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]
- 네트워크 상세 정보
$ docker run -dit --name container1 --network my-bridge nginx
$ docker run -dit --name container2 --network my-bridge alpine
- 네트워크를 지정해서 컨테이너 생성
- docker run option) --network network : Connect a container to a network
$ docker exec -it container2 ping container1
PING container1 (172.18.0.2): 56 data bytes
64 bytes from 172.18.0.2: seq=0 ttl=64 time=0.332 ms
64 bytes from 172.18.0.2: seq=1 ttl=64 time=0.339 ms
64 bytes from 172.18.0.2: seq=2 ttl=64 time=0.419 ms
...
- container2에서 container1에 ping 명령어로 통신이 가능한지 확인
host
- 컨테이너는 호스트의 네트워킹 네임스페이스를 공유
- 호스트의 포트 사용, 컨테이너에 자체 IP 주소가 없음 (포트 매핑 -P 필요없음)
- 같은 포트를 여러 컨테이너에서 사용할 수 없음
- Linux 컨테이너만 지원
host 네트워크 설정 및 사용 예제
$ docker run -d --name nginx-host --network host nginx
- niginx-host 이름으로 nginx 컨테이너를 호스트 네트워크 모드로 실행
- nginx는 호스트의 80번 포트를 사용하므로 80번 포트 사용
- 호스트 머신의 IP/포트를 그대로 사용하기 때문에 포트 바인딩(-p) 없이도 바로 접근 가능 (브라우저에서 http://localhost 접속)
※ 주의
host 네트워크는 docker network create 로 생성 불가
docker run 에서 --network host 로 설정 !!
overlay
- 여러 Docker 데몬 호스트 간에 분산 네트워크를 생성
- Swarm 서비스 간 연결을 생성하는 데 자주 사용
docker network 명령어
$ docker network COMMAND
Commands :
- connect Connect a container to a network
- create Create a network
- disconnect Disconnect a container from a network
- inspect Display detailed information on one or more networks
- ls List networks
- prune Remove all unused networks
- rm Remove one or more networks
* docker/networking
https://docs.docker.com/engine/network/
* docker network
https://docs.docker.com/reference/cli/docker/network/
'! > docker' 카테고리의 다른 글
docker compose (0) | 2025.05.29 |
---|---|
docker volume, bind mounts (0) | 2025.04.12 |
Dockerfile (0) | 2025.04.04 |
Docker CLI 명령어 (0) | 2024.11.14 |
Docker 설치 (MacOS) (0) | 2022.09.05 |