Docker 容器互聯

準備知識

  • 網絡端口映射
    • -P :是容器內部端口隨機映射到主機的高端口。
    • -p : 是容器內部端口綁定到指定的主機端口。
docker run -d -P --name t1 images-name python app.py (/bin/bash)
docker run -d -p --name t1 5000:5000 images-name python app.py (/bin/bash)

可以指定容器綁定的網絡地址,比如綁定 127.0.0.1。
docker run -d -p 127.0.0.1:5001:5000 images-name python app.py

默認都是綁定 tcp 端口,如果要綁定 UDP 端口,可以在端口後面加上 /udp。
docker run -d -p 127.0.0.1:5000:5000/udp  --name t1 images-name python app.py

docker port 命令可以讓我們快捷地查看端口的綁定情況。
docker port t1

開始互聯

容器命名

當創建一個容器的時候,docker 會自動對它進行命名。也可以使用 --name 標識來命名容器,例如:

docker run -itd --name t1 myubt:v1.0 /bin/bash
docker run -itd --name t2 myubt:v1.0 /bin/bash

docker ps 命令可以查看容器名稱

新建網絡

docker network create -d bridge test-net

-d:參數指定 Docker 網絡類型,有 bridge、overlay。

容器連接到該網絡

docker run -itd --name t1 --network test-net myubt:v1.0 /bin/bash
docker run -itd --name t2 --network test-net myubt:v1.0 /bin/bash

進入到上述容器中

安裝 ping工具
apt-get update
apt install iputils-ping

在 容器 t1 中執行
ping t2 或者 ping t2的ip
在t2中亦然

配置DNS

在宿主機的 /etc/docker/daemon.json 文件中增加以下內容來設置全部容器的 DNS:

{
  "dns" : [
    "114.114.114.114",
    "8.8.8.8"
  ]
}
重啓 docker 生效
/etc/init.d/docker restart

提示:
如果在容器啓動時沒有指定 --dns 和 --dns-search,Docker 會默認用宿主主機上的 /etc/resolv.conf 來配置容器的 DNS。

如果只針對一個容器設置,可以:


sudo docker run --dns 8.8.8.8 --dns 114.114.114.114 --name t1 -it  myubt:v1.0 /bin/bash

參數說明:

-h HOSTNAME 或者 --hostname=HOSTNAME: 設定容器的主機名,它會被寫到容器內的 /etc/hostname 和 /etc/hosts。

--dns=IP_ADDRESS: 添加 DNS 服務器到容器的 /etc/resolv.conf 中,讓容器用這個服務器來解析所有不在 /etc/hosts 中的主機名。

--dns-search=DOMAIN: 設定容器的搜索域,當設定搜索域爲 .example.com 時,在搜索一個名爲 host 的主機時,DNS 不僅搜索 host,還會搜索 host.example.com。

重啓 docker 生效
/etc/init.d/docker restart
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章