在默认情况下,docker中容器的ip是随机分配的,这不利于我们在容器内搭建各种web服务,因此要设置静态ip。
使用docker的—net=none选项再通过iproute2设置静态ip相对较为繁琐,在此不再赘述。
使用pipework脚本配置相对比较方便:
创建docker守护进程
# docker -d
查看本机docker接口ip
# ip addr
docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 56:84:7a:fe:97:99 brd ff:ff:ff:ff:ff:ff
inet 172.17.42.1/16 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::5484:7aff:fefe:9799/64 scope link
valid_lft forever preferred_lft forever
拉取镜像
# docker pull httpd:latest
下载pipework脚本
# curl https://raw.githubusercontent.com/jpetazzo/pipework/master/pipework > /usr/local/bin/pipework &&\
# chmod a+x /usr/local/bin/pipework
后台运行httpd:latest并赋与主机docker0接口同网段ip
# pipework docker0 $(docker run -d httpd:latest httpd -D FOREGROUND) 172.16.42.10/16
检验成果
# curl 172.16.42.10
<html><body><h1>It works!</h1></body></html>
参考:
Advanced Docker Networking with Pipework
GitHub Pipework