【发布时间】:2015-03-12 07:07:31
【问题描述】:
我现在尝试在启动 Docker 容器时分配静态 IP 172.17.0.1。
我使用 2122 端口作为这个容器的 ssh 端口,以便让这个容器监听 2122 端口。
sudo docker run -i -t -p 2122:2122 ubuntu
这个命令将运行一个带有随机 IP 的 Docker 容器,比如 172.17.0.5,但是我需要为容器分配一个特定的 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 到这个容器时,它都不起作用。我可能遇到了什么问题?
【问题讨论】:
-
@larrylo 你能确认你在容器内启动了一个 sshd 吗?
-
您正在撤消 docker 守护进程为您执行的所有路由。容器不是虚拟机。
-
是的,我确认我可以在容器内启动 sshd
标签: docker