[Network]
docker network ls
[FILTERING]
docker network ls
--filter driver=bridge
--filter scope=local
[Detail]
docker network ls --no-trunc
NETWORK ID NAME DRIVER SCOPE
86a7d65c511b15434f7d64de7dbda022f364a5ec374ebd603fff18882e424754 bridge bridge local
00f9d8aed7e1312c6b9f5ee221a521d977ba0d31491f81f0366a0a15ea82a03c host host local
dafe19f5b76dc89f53074488095cf7da8577d81640c1112686b09b9bb2dffcaa mynet bridge local
3e5dd8984a4acce741d96192590dc16581d41dd2787879673a0b0b0dc17111f8 none null local
19b6c9fb38a75bf6145c8527e0deb9095c73245d78635cadc78516f32f662e69 root_wpnet bridge local
[ Network ID 간단 출력 -q ]
docker network ls -q
6a7d65c511bw
00f9d8aed7e1
dafe19f5b76d
3e5dd8984a4a
19b6c9fb38a7
docker network ls -q --filter id=861
docker run -it --add-host docker1:192.168.10.11 centos:8
임시 변경 후
ip addr add 192.168.11.11/24 dev eth0
원래 외부에서 도커 호스트 IP로만 접속 가능
임시로 해당 IP 주소로 웹 접속 가능
--------------------------------
docker run -d --dns 8.8.8.8
❗ --add-host나 -p, --dns 등의 Docker 옵션은 컨테이너 내부 동작에만 영향을 미치고, 도커 호스트(리눅스 시스템)의 네트워크 인터페이스에는 아무 IP도 추가하지 않는다.
🔎 결론
docker run -d \\
--dns 8.8.8.8 \\
--add-host docker1:192.168.11.11 \\
--name httpd \\
-p 8181:80 \\
-v myweb:/var/local/apache2/htdocs \\
httpd
/etc/hosts 파일에 한 줄을 추가하는 거야:
이렇게 컨테이너를 실행했어도:
❌ 192.168.11.11은 ifconfig 미출력
- 192.168.11.11은 도커 네트워크 외부 IP 아님
- 단순히 컨테이너 안에서 docker1이라는 이름을 192.168.11.11로 인식하게끔 도와주는 용도 (/etc/hosts에 추가됨)
✅ 확인 방법
docker exec -it httpd bash
cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00:: ip6-localnet
ff00:: ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.11.11 docker1
172.17.0.2 33228d62ad13
즉, 컨테이너 안에서는 ping docker1 하면 192.168.11.11로 간다 → 내부 DNS처럼 작동
🔧 ifconfig에서 192.168.11.11이 뜨게 하려면?
도커 호스트가 해당 IP를 실제로 갖고 있어야 가능
👉 방법 1: 도커 호스트에 서브 IP로 추가
sudo ip addr add 192.168.11.11/24 dev ens 160
→ 이러면 ifconfig나 ip a에 192.168.11.11이 뜨게 돼
→ 외부에서 http://192.168.11.11:8181 접속도 가능함
요약 정리
옵션 설명 ifconfig에 뜨는가?
--add-host docker1:192.168.11.11 | 컨테이너 내부 DNS 설정 (/etc/hosts) | ❌ |
--dns 8.8.8.8 | 컨테이너의 DNS 서버 설정 | ❌ |
-p 8181:80 | 호스트 8181 → 컨테이너 80 포트 연결 | ❌ |
ip addr add ... | 호스트 네트워크 인터페이스에 IP 추가 | ✅ |
필요하면 도커 네트워크를 커스터마이징해서 bridge 말고 macvlan으로 진짜 IP를 붙이게 만드는 방법도 있음
DOCKER NETWORK
컨테이너 간의 통신
컨테이너와 외부 네트워크 연결제어
🚦 기본 네트워크 드라이버 종류
드라이버 설명 특징
bridge (기본) | 가상 브리지 네트워크 | 기본 도커 네트워크, 컨테이너끼리 통신 가능 |
host | 호스트 네트워크와 공유 | 성능 빠름, 포트 충돌 주의 |
none | 네트워크 없음 | 네트워크 격리 필요할 때 |
macvlan | 물리 네트워크에 직접 연결 | 컨테이너에 IP 할당 가능 (실제 네트워크처럼) |
overlay | 다중 호스트 간 통신용 (Swarm) | 클러스터 환경에서 사용 |
docker network create -d bridge [mynet]
Vmware - Network Editor - Vmnet 추가와 동일 원리
[docker1 ~]# ifconfig
br-19b6c9fb38a7: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.18.0.1 netmask 255.255.0.0 broadcast 172.18.255.255
br-d66ab32a78df: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.19.0.1 netmask 255.255.0.0 broadcast 172.19.255.255
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
docker network ls
NETWORK ID NAME DRIVER SCOPE
86a7d65c511b bridge bridge local
00f9d8aed7e1 host host local
d66ab32a78df mynet bridge local
3e5dd8984a4a none null local
19b6c9fb38a7 root_wpnet bridge local
컨테이너 사용 시 이미지 및 컨테이너 삭제 불가
네트워크 이용 시에도 해당 네트워크 삭제 불가
1️⃣ bridge 네트워크 (기본값)
기본 bridge라는 네트워크 있음.
docker run -d --name web1 nginx
docker run -d --name web2 nginx
미지정 시 브릿지 네트워크
docker run -d --network mynet centos
지정 시 해당 브릿지 네트워크 할
- 같은 bridge에 있을 경우, web1, web2 이름으로 서로 통신 가능
- 격리된 내부 IP를 씀 (172.17.0.x 대역 등)
docker network inspect bridge
- 내부 IP 확인 가능
2️⃣ host 네트워크
docker run --network host -d nginx
- 컨테이너가 도커 호스트와 동일한 네트워크 사용
- p 포트 매핑 필요 없음 (이미 공유됨)
- 주의: 여러 컨테이너가 동일 포트를 쓰면 충돌 가능
3️⃣ none 네트워크
docker run --network none -it ubuntu bash
- 완전한 네트워크 격리
- 보안 테스트, 네트워크 없는 테스트 등에 유용
4️⃣ macvlan 네트워크 (중요!)
→ 컨테이너에 독립된 IP를 부여해서 실제 네트워크에 붙게 함
docker network create -d macvlan \\
--subnet=192.168.100.0/24 \\
--gateway=192.168.100.1 \\
-o parent=eth0 \\
macvlan_net
→ 그런 다음 컨테이너 실행:
docker run --rm -it --network macvlan_net --name test1 alpine
- 이제 test1 컨테이너는 192.168.100.x IP를 가지게 되고
- 실제 네트워크에서도 ping이 가능함
📌 단점: macvlan은 호스트와 컨테이너 간 직접 통신이 안 됨 → 별도 설정 필요
5️⃣ overlay 네트워크 (Swarm Mode)
- 여러 호스트에서 도커 컨테이너끼리 통신하도록 해주는 네트워크
- Swarm 클러스터 환경에서 주로 사용됨
'IT 엔지니어 > CLOUD' 카테고리의 다른 글
Docker Resource Limit (0) | 2025.05.13 |
---|---|
Docker -1 (0) | 2025.05.13 |
Docker file (0) | 2025.05.11 |
Docker Network (0) | 2025.05.11 |
Docker network (0) | 2025.05.10 |