본문 바로가기

클라우드/도커(Docker)

도커 Docker 네트워크 / bridge, host, link

docker 0


브릿지 네트워크

 


 

호스트 네트워크


NULL 네트워크


링크 (LINK)

 

 

더보기

# 도커 네트워크 드라이버

# 도커패키지를 설치하면 만들어지는 브릿지
# docker0 브릿지이자 게이트웨이
# 가상의 네트워크 제공
# 컨테이너들에게 ip를 자동 할당하는 인터페이스
vagrant@docker:~$ ip a s
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:24:99:51:5c brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:24ff:fe99:515c/64 scope link 
       valid_lft forever preferred_lft forever


# 브릿지 (bridge)
# L2네트워크를 제공하기 위한 장비
vagrant@docker:~$ apt install bridge-utils
vagrant@docker:~$ docker run -d --name ldh httpd
vagrant@docker:~$ brctl show
bridge name bridge id STP enabled interfaces
docker0 8000.02422499515c no vethef996d9



# 내부에서 나가는건 가능하지만 외부에서는 들어올 수 없다
wp 웹   mysql 디비
db는 외부에 노출시킬 필요가 없지만 web은 노출 시켜야 한다
 -> 외부로 컨테이너를 노출 시키기 위하여
    포트포워딩을 사용

# 포트포워딩
vagrant@docker:~$ docker run -d --name ost -p 80:80 httpd
vagrant@docker:~$ docker ps
CONTAINER ID   IMAGE     COMMAND              CREATED         STATUS         PORTS                               NAMES
72756fe04b1a   httpd     "httpd-foreground"   6 seconds ago   Up 5 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   ost
                                             0.0.0.0:80 host에 있는 모든 ip 호스트의 80 포트 -> 80 컨테이너의 80 포트
vagrant@docker:~$ docker run -d --name ost -p 8080:80 httpd
                                                 8080으로 접근하면 80으로 보내준다

# 이미지의 정보
exposedports 80 외부에서 접근해야하는 포트





# 호스트(host) 네트워크
호스트 네트워크는 호스트와 네트워크를 공유한다
호스트 네트워크는 같은때문에(80)를 사용할 수 없기 때문에 하나의 컨테이너만 가능
포트포워딩 사용하지 않아도 외부와 통신 가능
vagrant@docker:~$ docker run -d --network host httpd



#null
네트워크가 없는것
vagrant@docker:~$ docker run -d --network none httpd




웹에서 디비로 접근해야함 데이터를 읽어와야하니까 
디비에 접속할 정보를 지정,wp.config.php 제공이 번거롭다
-> 링크를 통해 해결

# 링크
두개의 컨테이너가 이름을 가지고 연결할수있다
서로 통신을할때 아이피가 아니라 이름으로 연결
etc/host 파일에 등록이 되고 해당되는 컨테이너에 접근할수있다
#컨테이너 1
vagrant@docker:~$ docker run -d --name ldh -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql:5.7
#컨테이너 2
vagrant@docker:~$ docker run -it --name ost --link ldh ubuntu
root@4575c0edfd72:/# cat etc/hosts
172.17.0.2 ldh 3af5cb61025a