将 docker 容器绑定到 OSX 上的 IP
Bind docker container to IP on OSX
在 Ubuntu 我做了这样的事情
sudo ip addr add 192.168.33.30/21 dev eth0
docker run -p 192.168.33.30:80:80 -d foo/bar /sbin/my_init
然后我可以在 http://192.168.33.30 打开浏览器。
我如何在 OSX 上完成同样的事情?
(OSX 没有 'ip addr' 和这个 boot2docker-vm 东西)
我发现这个解决方案对我有用:
# Register IP address
sudo ifconfig lo0 add 192.168.33.30
# Run docker container with port 80 assigned to random free port
docker run -p 80 --name boing -d foo/bar /sbin/my_init
# Start SSH tunnel for port 80 (http)
TUNNEL_ADDR_PORT_80=$(docker port boing | grep 80 | awk '{print }')
sudo ssh -o IdentitiesOnly=yes -o StrictHostKeyChecking=no \
-o UserKnownHostsFile=/dev/null -o LogLevel=quiet -i $HOME/.ssh/id_boot2docker \
-nNT -f -L 192.168.33.30:80:$TUNNEL_ADDR_PORT_80 \
docker@$(boot2docker ip 2>/dev/null) &
在 Ubuntu 我做了这样的事情
sudo ip addr add 192.168.33.30/21 dev eth0
docker run -p 192.168.33.30:80:80 -d foo/bar /sbin/my_init
然后我可以在 http://192.168.33.30 打开浏览器。
我如何在 OSX 上完成同样的事情?
(OSX 没有 'ip addr' 和这个 boot2docker-vm 东西)
我发现这个解决方案对我有用:
# Register IP address
sudo ifconfig lo0 add 192.168.33.30
# Run docker container with port 80 assigned to random free port
docker run -p 80 --name boing -d foo/bar /sbin/my_init
# Start SSH tunnel for port 80 (http)
TUNNEL_ADDR_PORT_80=$(docker port boing | grep 80 | awk '{print }')
sudo ssh -o IdentitiesOnly=yes -o StrictHostKeyChecking=no \
-o UserKnownHostsFile=/dev/null -o LogLevel=quiet -i $HOME/.ssh/id_boot2docker \
-nNT -f -L 192.168.33.30:80:$TUNNEL_ADDR_PORT_80 \
docker@$(boot2docker ip 2>/dev/null) &