이전 도커의 브릿지에 관한 글에서 사용자 정의 브릿지와 기본 브릿지의 차이들을 설명한 적이 있습니다.
(1) 사용자 정의 브릿지는 자동으로 컨테이너 간의 DNS 문제를 해결해 줍니다.
(2) 사용자 정의 브릿지는 더 나은 고립을 제공합니다.
(3) 컨테이너를 정지시키지 않고 네트워크에 접근/분리 할 수 있습니다.
(4) 각각의 사용자 정의 브릿지는 설정이 가능합니다.
(5) 기본 브릿지 네트워크는 연결된 컨테이너 간의 환경변수 공유가 가능합니다.
이 중에서 (3)에 대한 테스트를 해 보겠습니다.
(3)에 대한 영어 원문을 보면, 기본 브릿지 네트워크에서는 컨테이너를 중지시키지 않고는 컨테이너를 제거할 수 없는 것처럼 나와 있으나, 실제로 해 본 결과, 가능한 것 같습니다...
https://docs.docker.com/network/bridge/
https://docs.docker.com/engine/reference/commandline/network_connect/
step 1. 사용자 정의 브릿지 네트워크에 컨테이너 추가 및 삭제
1] 기본 브릿지 네트워크를 사용하는 컨테이너를 하나 만듭니다.
[root@centos77 ~]# docker run -it -d --name alp1-1 alpine
da280ea210e438cef48244506ce2a725077f0a4d3e71aceef60595eb127b6578
[root@centos77 ~]# docker network inspect bridge
[
{
"Name": "bridge",
"Containers": {
"da280ea210e438cef48244506ce2a725077f0a4d3e71aceef60595eb127b6578": {
"Name": "alp1-1",
"EndpointID": "597146971c68bd1b23fc9504469131d269ffd478bb5995dbe5a24643a0117cf3",
"MacAddress": "02:42:ac:12:00:02",
"IPv4Address": "172.18.0.2/24",
"IPv6Address": ""
}
},
...
[root@centos77 ~]# docker exec alp1-1 ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
68: eth0@if69: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP
link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff
inet 172.18.0.2/24 brd 172.18.0.255 scope global eth0
valid_lft forever preferred_lft forever
[root@centos77 ~]#
기본 브릿지에 컨테이너가 연결되어있고, 컨테이너의 ip도 기본 브릿지에서 할당한 것 밖에 없음을 알 수 있습니다.
2] 사용자 정의 브릿지 네트워크에 컨테이너 추가
[root@centos77 ~]# docker network connect br1 alp1-1
[root@centos77 ~]# docker network inspect br1
[
{
"Name": "br1",
...
"Containers": {
"da280ea210e438cef48244506ce2a725077f0a4d3e71aceef60595eb127b6578": {
"Name": "alp1-1",
"EndpointID": "6617adeec5507f51a2cccd2450dc55319a1232a8b87ec843e24c5254fbac05c3",
"MacAddress": "02:42:ac:1c:01:01",
"IPv4Address": "172.28.1.1/24",
"IPv6Address": ""
}
},
...
[root@centos77 ~]# docker exec alp1-1 ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
68: eth0@if69: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP
link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff
inet 172.18.0.2/24 brd 172.18.0.255 scope global eth0
valid_lft forever preferred_lft forever
70: eth1@if71: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP
link/ether 02:42:ac:1c:01:01 brd ff:ff:ff:ff:ff:ff
inet 172.28.1.1/24 brd 172.28.1.255 scope global eth1
valid_lft forever preferred_lft forever
[root@centos77 ~]#
컨테이너에서 br1 네트워크에서 부여한 ip가 있음을 확인할 수 있습니다.
3] 사용자 정의 브릿지 네트워크에 컨테이너 제거
[root@centos77 ~]# docker network disconnect br1 alp1-1
[root@centos77 ~]# docker network inspect br1
[
{
"Name": "br1",
...
"Containers": {},
...
[root@centos77 ~]# docker exec alp1-1 ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
68: eth0@if69: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP
link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff
inet 172.18.0.2/24 brd 172.18.0.255 scope global eth0
valid_lft forever preferred_lft forever
[root@centos77 ~]#
컨테이너가 네트워크에서 없어진 것과, 컨테이너에서 br1에서 부여한 ip가 없어진 것을 확인할 수 있습니다.
step 2. 기본 브릿지 네트워크에 컨테이너 삭제 및 추가
1] 위에서 만든 컨테이너를 기본 브릿지 네트워크에서 삭제시켜봅니다.
[root@centos77 ~]# docker network disconnect bridge alp1-1
[root@centos77 ~]# docker exec alp1-1 ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
[root@centos77 ~]# docker network inspect bridge
[
{
"Name": "bridge",
...
"Containers": {},
...
[root@centos77 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
da280ea210e4 alpine "/bin/sh" 12 minutes ago Up 12 minutes alp1-1
[root@centos77 ~]#
컨테이너에서 ip를 확인해 보아도 기본 브릿지에 속한 ip도 없을 뿐더러, 기본 브릿지 네트워크의 정보를 봐도 컨테이너가 없어진 것을 확인할 수 있습니다.
2] 위에서 만든 컨테이너를 기본 브릿지 네트워크에 다시 추가시켜봅니다.
[root@centos77 ~]# docker network connect bridge alp1-1
[root@centos77 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
da280ea210e4 alpine "/bin/sh" 13 minutes ago Up 13 minutes alp1-1
[root@centos77 ~]# docker exec alp1-1 ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
74: eth3@if75: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP
link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff
inet 172.18.0.2/24 brd 172.18.0.255 scope global eth3
valid_lft forever preferred_lft forever
[root@centos77 ~]#
컨테이너에 ip도 부여가 되어 있는 것을 확인할 수 있습니다.
'Linux(Centos or RHEL) > docker' 카테고리의 다른 글
DinD, DooD..? (0) | 2020.05.07 |
---|---|
도커 기본 브릿지와 사용자 정의 브릿지의 차이 (4) (0) | 2020.04.27 |
도커 기본 브릿지와 사용자 정의 브릿지의 차이 (2) (0) | 2020.04.27 |
도커 기본 브릿지와 사용자 정의 브릿지의 차이 (1) (0) | 2020.04.27 |
도커에서의 브릿지 네트워크의 특징..? (0) | 2020.04.27 |