けつあご日記

tinojiはやみのふぃくさーにしかなりたくない.ひゃっぽゆずっててんほういは,あり.

Dockerの「コンテナ間」でポートをバインドする

メモ。ゴリッとポートフォワーディングする。

起動。

#接続先コンテナB
docker run -it --privileged --name containerA -d <id> /sbin/init

#接続元コンテナA(/etc/hostsに追加するためにlink指定)
docker run -it --privileged --name containerA --link containerB:containerB -d <id> /sbin/init

ポートフォワーディング。

docker exec -it containerA bash
yum install -y iptables-services
systemctl start iptables

#localhostへの通信のポートフォワードを許可
sysctl -w net.ipv4.conf.eth0.route_localnet=1

#/etc/hostsからlink指定したcontainerBのIPを取得してiptablesに追加
iptables -t nat -A OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j DNAT --to-destination `getent hosts containerB | cut -d ' ' -f 1`:80
iptables -t nat -A POSTROUTING -j MASQUERADE

確認。

curl -v http://localhost/


プログラマのためのDocker教科書 第2版 インフラの基礎知識&コードによる環境構築の自動化

プログラマのためのDocker教科書 第2版 インフラの基礎知識&コードによる環境構築の自動化