準備知識
- 網絡端口映射
- -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