gpt4 book ai didi

docker - 通过链接/端口转发从另一个容器访问一个容器的应用程序

转载 作者:行者123 更新时间:2023-12-02 19:37:52 29 4
gpt4 key购买 nike

请提出如何从另一个容器启动容器服务的建议。

详细信息在这里:

Docker HOST1正在运行2个容器: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。该容器中没有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和端口等情况下启动。 http://172.17.0.4:1234

我尝试了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

最佳答案

对于“权限被拒绝”问题:在启动Docker容器时添加“--privileged”选项后,此问题已解决,如下所示:

docker run -it --name debrcvr8 --link debsrc:ALIdebsrc --user root --privileged -p 5555:80 Ubuntu: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 POSTROUTING -j MASQUERADE

关于docker - 通过链接/端口转发从另一个容器访问一个容器的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42666838/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com