16.2,docker網絡

 

 

Docker 容許經過外部訪問容器或容器互聯的方式來提供網絡服務。python

  • 端口映射容許外部訪問容器
  • --link 容器互聯
  • 容器橋接網絡
1.經過--link容器通訊,給test2添加一個hosts解析記錄
docker run -d --name test2 --link test1 busybox /bin/sh -c "while true;do sleep 3600;done"
test2能夠ping通test1,反之不能夠

可是--link是不推薦使用的,而是更強大的自定義docker網絡連接容器web

1.新建一個docker網絡
docker network create -d bridge my-net
-d 參數指定 Docker 網絡類型,有 bridge overlay

2.鏈接容器
運行一個容器並鏈接到新建的 my-net 網絡

$ docker run -it --rm --name busybox1 --network my-net busybox sh
打開新的終端,再運行一個容器並加入到 my-net 網絡

$ docker run -it --rm --name busybox2 --network my-net busybox sh
再打開一個新的終端查看容器信息

$ docker container ls

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
b47060aca56b        busybox             "sh"                11 minutes ago      Up 11 minutes                           busybox2
8720575823ec        busybox             "sh"                16 minutes ago      Up 16 minutes                           busybox1
下面經過 ping 來證實 busybox1 容器和 busybox2 容器創建了互聯關係。

在 busybox1 容器輸入如下命令

/ # ping busybox2
PING busybox2 (172.19.0.3): 56 data bytes
64 bytes from 172.19.0.3: seq=0 ttl=64 time=0.072 ms
64 bytes from 172.19.0.3: seq=1 ttl=64 time=0.118 ms
用 ping 來測試鏈接 busybox2 容器,它會解析成 172.19.0.3。

同理在 busybox2 容器執行 ping busybox1,也會成功鏈接到。

/ # ping busybox1
PING busybox1 (172.19.0.2): 56 data bytes
64 bytes from 172.19.0.2: seq=0 ttl=64 time=0.064 ms
64 bytes from 172.19.0.2: seq=1 ttl=64 time=0.143 ms
這樣,busybox1 容器和 busybox2 容器創建了互聯關係。

外部訪問容器

容器中能夠運行網絡應用,可是要讓外部也能夠訪問這些應用,能夠經過-p或-P參數指定端口映射。docker

-P 參數會隨機映射端口到容器開放的網絡端口
[root@oldboy_python ~ 16:31:37]#docker run -d -P training/webapp python app.py

檢查映射的端口安全

複製代碼
#宿主機ip:32768 映射容器的5000端口
[root@oldboy_python ~ 16:34:02]#docker ps -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cfd632821d7a training/webapp "python app.py" 21 seconds ago Up 20 seconds 0.0.0.0:32768->5000/tcp brave_fermi
複製代碼

查看容器日誌信息服務器

#不間斷顯示log
docker logs -f cfd

也能夠經過-p參數指定映射端口網絡

#指定服務器的9000端口,映射到容器內的5000端口
[root@oldboy_python ~ 16:46:13]#docker run -d -p 9000:5000 training/webapp python app.py c0b5a6278d0f4f2e9b9eba8680451111d8b911b61de0c37ea64cb337aefb854e

訪問服務器的9000端口app

(若是訪問失敗的話,檢查本身的防火牆,以及雲服務器的安全組)webapp

查看指定容器的端口映射

[root@oldboy_python ~ 16:49:01]#docker port c0b
5000/tcp -> 0.0.0.0:9000

查看容器內的進程tcp

[root@oldboy_python ~ 16:49:05]#docker top c0b
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                3926                3912                0                   16:46               ?                   00:00:00            python app.py
相關文章
相關標籤/搜索