1. 程式人生 > >docker技術學習總結(5)—— 網路基礎配置

docker技術學習總結(5)—— 網路基礎配置

1,埠對映實現訪問容器

  • 從外部訪問容器應用

啟動容器時,如果不加指定引數,在容器外是不能通過網路訪問容器內的網路應用和服務的。

可以通過-P-p引數來指定埠對映讓外部訪問,當使用-P時,會隨機對映一個埠至容器內部開放的網路埠:

docker run -P -d training/webapp python app.py

docker ps -l,檢視到本地主機的32772埠被對映到了容器的5000埠,訪問宿主機的32772埠即可訪問容器內web應用提供的介面。


通過docker logs檢視應用的資訊:

docker logs -f unruffled_williams 

-p可以指定要對映的埠,並且,在一個指定的埠上只能繫結一個容器,格式為:ip:hoatPort:containerPort  | ip:containerPort | hostPort:containerPort.

  • 檢視埠對映配置

使用docker port 命令檢視端配置和繫結地址:

docker port quizzical_murdock  5000

注:容器有自己的內部網路和ip,使用docker inspect+容器id檢視。

2,容器互聯實現容器間通訊

  • 自定義容器命名 --name

連線系統依據容器的名稱來執行。因此,首先要自定義一個容易記的容器命名,通過--name標記指定自定義命名:

docker run -d --name web training/webapp python app.py

注:容器的名稱時唯一的,建立容器的時候,如果已經有一個同名的容器,需要先刪除之前的同名容器。

在執行docker run的時候,如果加上--rm

標記,容器在停止時會自動刪除,注意--rm不能和-d同時使用。

  • 容器互聯 --link

使用--link引數可以可以讓容器之間進行安全的互動。

建立一個數據庫容器:

docker run --name db -d training/postgres

然後建立一個web容器並連線到db容器:

docker run -d -P --name web --link db:db training/webapp python app.py

docker通過兩種方式為容器公開連線資訊:環境變數和/ect/hosts檔案

使用env命令檢視環境變數:docker exec -it web /bin/bash env


其中DB_開頭的環境變數是供web容器連線db使用的,字首採用大寫的別名。

檢視hosts資訊: 

docker exec -ti web cat /etc/hosts

[[email protected]_0_13_centos ~]# docker exec -ti web cat /etc/hosts
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2      db 2d94327dffe1
172.17.0.3      7b2a9329ba27
可以看到db的hosts資訊已經配置好了。