2017-03-08 11 views
0

別のコンテナからコンテナのサービスを開始するにはどうすればよいかお勧めします。ここリンク/ポート転送で別のコンテナから1つのコンテナのアプリケーションにアクセスする

詳細:CONT1とCONT2:

ドッカーHOST1は2個のコンテナを実行しています。

CONT1はubuntuとapacheに基づいています。それはIP 172.17.0.2を持っています。ここでポート80はDockerfileに公開されています。

vi Dockerfile 
FROM ubuntu:14.04 
MAINTAINER [email protected] 
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です。

私はCONT1(受信者)とCONT2(送信元)を「リンク」しています。私はCONT2からCONT1にpingでき、その逆も可能です。 HOST1から

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 

::私はhttp://172.17.0.2:80

を使用してIEからのApache Webサービスを起動することができます。しかし、私の意図は、apacheのように、どのように私はCONT2からCONT2に要求を転送することができますCONT2すなわち経由CONT1のApacheを起動することですCONT1のサービスはCONT2のIPとポートの提供で起動できます。 HTTP:1234

私はIP NATを試みたが、それは次のエラースロー://172.17.0.4ドッキングウィンドウを起動中に「--privileged」オプションを追加した後に解決される問題:許可拒否問題について

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 

答えて

0

をコンテナ、以下のようなもの:

ドッキングウィンドウが-it --name debrcvr8 --link debsrc実行します。ALIdebsrc --userルートは-p 5555を--privileged:80のubuntu:14.04/binに/ bashの

とするために転送の問題:以下のNATポートフォワーディングコマンドでこの問題を解決できました。 CONT2上のds:

ルートの@ ae06859a194e:/#iptablesの-tのnat -A PREROUTING -p TCP --dport -j DNAT --to-先: ルートの@ ae06859a194e:/#iptablesの-tのnat -A POSTROUTING CONT1を実行する(ドッカホスト・マシンでここ

0

CONT1上で実行されているApacheウェブサーバにアクセスするためにCONT2(172.17.0.4)上で実行された完全なコマンドである(172.17.0.2:80)

をMASQUERADE -j 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 --to-先172.17.0.2:[email protected]:/#

ルートの@ ae06859a194e:/#iptablesの-tのnat -A POSTROUTING -j MASQUERADE

関連する問題