我现在尝试在启动 Docker 容器时分配静态 IP 172.17.0.1。
我使用端口 2122 作为该容器的 ssh 端口,以便让该容器监听端口 2122。
sudo docker run -i -t -p 2122:2122 ubuntu
此命令将使用随机 IP(如 172.17.0.5)运行 Docker 容器,但我需要为该容器分配一个特定的 IP。
下面的shell脚本是我在高级网络设置中参考Docker文档的。
pid=$(sudo docker inspect -f '{{.State.Pid}}' <container_name> 2>/dev/null)
sudo rm -rf /var/run/netns/*
sudo ln -s /proc/$pid/ns/net /var/run/netns/$pid
sudo ip link add A type veth peer name B
sudo brctl addif docker0 A
sudo ip link set A up
sudo ip link set B netns $pid
sudo ip netns exec $pid ip link set eth0 down
sudo ip netns exec $pid ip link delete eth0
sudo ip netns exec $pid ip link set dev B name eth0
sudo ip netns exec $pid ip link set eth0 address 12:34:56:78:9a:bc
sudo ip netns exec $pid ip link set eth0 down
sudo ip netns exec $pid ip link set eth0 up
sudo ip netns exec $pid ip addr add 172.17.0.1/16 dev eth0
sudo ip netns exec $pid ip route add default via 172.17.42.1
这个shell脚本将分配一个静态IP 172.17.0.1并链接到世界。但每当我尝试从本地 ssh 到这个容器时,它都不起作用。我可能遇到了什么问题?
使用 Docker 版本 1.10.1(内部版本 9e83765)即可轻松使用。
首先你need创建您自己的 docker 网络 (mynet123)
docker network create --subnet=172.18.0.0/16 mynet123
然后,只需运行图像(我以 ubuntu 为例)
docker run --net mynet123 --ip 172.18.0.22 -it ubuntu bash
然后在ubuntu shell中
ip addr
另外你可以使用
-
--hostname
指定主机名
-
--add-host
向 /etc/hosts 添加更多条目
文档(以及为什么您需要创建网络)位于https://docs.docker.com/engine/reference/commandline/network_create/ https://docs.docker.com/engine/reference/commandline/network_create/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)