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
- 容器互聯 --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資訊已經配置好了。