Docker可以在运行容器时自动将IP地址添加到主机
我在hetzner.de上有一个服务器,有大约16个公共IPv4地址。
现在我正在运行这样的容器:
sudo docker run -d --name test6 -it -p 5.1.2.3:80:80 sunebeck/apache-php
这将最初产生这个错误:
Error starting userland proxy: listen tcp 5.1.2.3:80: bind: cannot assign requested address.
通过手动添加主机上的IP地址来修复这个问题:
ip addr add 5.1.2.3 dev eth0
之后,它按照预期工作,服务在5.1.2.3中作为端口80公开。 不过手动pipe理这个有点麻烦。
Docker能否根据需要自动添加/删除主机的IP地址?
Docker本身不能这样做。 除了一些例外(例如Docker在启动容器时创build的iptables规则),容器不能修改主机的networking环境。
解决这个问题最简单的方法可能就是安排在主机启动时将所有地址分配给接口,比如Fedora / CentOS / RHEL上的/etc/sysconfig/network-scripts/ifcfg-<interface>
,或者/etc/network/interfaces
在Debian / Ubuntu上。
这样,在Docker开始运行之前,这些地址将在接口上可用,并且您的端口绑定将毫无问题地工作。
- 如何在Docker上注册Postgres容器主机 – 组成?
- 使用docker在supervisord中loggingstdout
- 如何在Kubernetes上创buildMongoDB集群?
- 使用离子服务时无法访问dev服务器
- 如何确定使用PDF进行图像转换的颜色空间?
- 如何在ASP.NET Web应用程序中的docker中的sonarqube中执行代码分析
- 在Docker镜像中部署WAR文件的正确方法
- GAE托pipe虚拟机 – 如果您的项目名称太长,则无法部署
- angular2应用程序在nginx:稳定的高山docker图像尝试获取sockjs的URL,当我绑定主机8080 – >容器80,但不是80-> 80