请建议如何从一个容器启动另一个容器的服务。
详细信息请查看此处:
Docker HOST1运行两个容器: CONT1和CONT2。
CONT1基于ubuntu和apache。IP地址为172.17.0.2。这里的端口80暴露在Dockerfile中。
vi Dockerfile
FROM ubuntu:14.04
MAINTAINER debu3645@yahoo.com
RUN sudo apt-get update && sudo apt-get -y install iputils-ping traceroute apache2
EXPOSE 80
ENTRYPOINT ["apache2ctl"]
CMD ["-D","FOREGROUND"]CONT2仅基于ubuntu。此container.It中没有apache的IP为172.17.0.4。
我已经将CONT2(源)与CONT1(接收器)“链接”了。我可以从CONT2 ping CONT1,反之亦然。
sudo docker run -d --name CONT1 debapcping (debapcping image contains ubuntu, apache)
sudo docker run -d --name CONT2 --link CONT1:aliasCONT1 ubuntu:14.04 /bin/bash从HOST1::我可以使用http://172.17.0.2:80从IE启动apache web服务
但我的意图是通过CONT2启动CONT1的apache,即如何将请求从CONT2转发到CONT2,以便CONT1的apache服务可以在提供CONT2 IP和端口时启动。
我尝试了IP NAT,但它抛出了以下错误:
iptables -t nat -A PREROUTING -p tcp -d 172.17.0.4 --dport 80 -j DNAT --to-destination 172.17.0.2:80
iptables v1.6.0: can't initialize iptables table `nat': Permission denied (you must be root)
sudo docker info
Containers: 8
Running: 3
Paused: 0
Stopped: 5
Images: 10
Server Version: 1.13.1
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 32
Dirperm1 Supported: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Swarm: active
NodeID: i9b555lgjovk5ep3fln0j8roi
Is Manager: false
Node Address: 10.0.2.17
Manager Addresses:
10.0.2.15:2377
10.0.2.18:2377
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: aa8187dbd3b7ad67d8e5e3a15115d3eef43a7ed1
runc version: 9df8b306d01f59d3a8029be411de015b7304dd8f
init version: 949e6fa
Security Options:
apparmor
Kernel Version: 3.13.0-110-generic
Operating System: Ubuntu 14.04.1 LTS
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 1.49 GiB
Name: Consul2
ID: 3I44:ZHAW:R6BO:NF2J:YCLQ:ZRW6:ULOE:AKJQ:HD7M:EMPE:7Z35:H4KY
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https: // index.docker.io /v1 /
WARNING: No swap limit support
Experimental: false
Insecure Registries:
10.0.2.18:5000
127.0.0.0/8
Live Restore Enabled: false发布于 2017-03-09 14:18:53
对于权限被拒绝的问题:启动docker容器添加--privileged选项后解决的问题,如下图所示:
docker运行-it --名称debrcvr8 --链接debsrc:ALIdebsrc --用户根--特权-p 5555:80ubuntu:14.04 /bin/bash
对于转发问题:我设法在CONT2上使用以下NAT端口转发命令解决了这个问题:
root@ae06859a194e:/#iptables -t nat -A PREROUTING -p tcp --dport -j DNAT --to-destination : root@ae06859a194e:/# iptables -t nat -A root -j伪装
发布于 2017-03-09 14:29:27
下面是在CONT2(172.17.0.4)上运行的完整命令,用于访问运行在CONT1(172.17.0.2:80)上的apache服务器
在docker主机(运行CONT1和CONT2)中,我使用以下链接访问apache:http://172.17.0.4:6666/
root@ae06859a194e:/# iptables -t nat -A PREROUTING -p tcp -d 172.17.0.4 --dport 6666 -j DNAT -到目的地172.17.0.2:80root@ae06859a194e:/#
root@ae06859a194e:/# iptables -t nat -A root -j伪装
https://stackoverflow.com/questions/42666838
复制相似问题