This repository has been archived by the owner on Jul 16, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
コンテナなのに環境を変えたら動かなくなった!? #11
Comments
DNSの話はめんどくさそうなので、 |
# /etc/hosts
127.0.0.1 localhost
+ 192.168.22.130 hpn.finals.ictsc
...略...
|
もう一つの方はNATかな? |
connection-checkからの確認ができないのでダメ。 |
こいつらを変えればいいらしい。
|
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
「時代はコンテナでオンプレだ!」が口癖である高圧的な上司は、最近、グローバルアドレスの持つ自宅のゲートウェイルータからフォワーディングを行うことで自宅サーバを全世界に公開しているみたいです。
ある日、上司は鬼のような形相で、「レンタルサーバーで動いていたDockerコンテナを自宅サーバに移行したらhttpが通らなくなった!pingは通るのにだぞ!!お前Docker詳しいって言ってたよな、サーバにだけsshで入れるようにしてやるから原因を究明して直してくれよ!」とあなたに無茶振りをしてきました。重ねて、「Dockerはどの環境でも動くものだろ!もともと動いてたんだからイメージに修正は加えるな!」とのことです。
上司との会話より、レンタルサーバーから自宅サーバに移行したコンテナは http://hpn.finals.ictsc へのGETリクエストが失敗するとエラー出力がされるものであり、また hpn.finals.ictsc は上司の自宅のゲートウェイルータに振られるグローバルアドレスに解決されることがわかりました。
またこの問題を先輩に相談したところ、先輩はニヤニヤした顔で「これは俺も家でサーバやるときにハマった事あるなぁ・・大きく2通りやり方があるんだが今回はRouterにログインできないから片方しか試せないかな・・・そうだ!明日の15時までに2通りの解決法を思いついた上で問題を解いたら焼き肉に連れてってやるよ!」と言ってきました。
上司の命令、そして焼き肉のために問題を解決してください。
情報
topology
この問題では 192.168.22.0/25 ネットワークをグローバルネットワーク、 192.168.22.128/25 をローカルネットワークとします。
参加者手元PCから 192.168.22.0/25 にはL3ルーティングで通信することが可能です。
sshでログインできるマシンは Server のみです。
Routerは外部からの通信のうち以下のものをServerに転送する設定となっています。そのためServerへのアクセスは 192.168.22.1 宛のsshを行うことで可能となります。
tcp 22 宛の通信
tcp 80 宛の通信
tcp 443 宛の通信
Router
IPアドレス
グローバルアドレス: 192.168.22.1/25
ローカルアドレス: 192.168.22.129/25
このルータにsshはできません。
Server
IPアドレス
ローカルアドレス: 192.168.22.130/25
このサーバはsshでログイン可能です。
ユーザー: admin
パスワード: password
Serverでは以下の2つのコンテナが起動しています。
httpd: 80番でWebサービスを提供するコンテナ
手元PCから http://hpn.finals.ictsc にアクセスすることで、 It works! と表示されます。 (DNS Serverは会場DHCPにより指定されるものを使用してください)
connection-check: hpn.finals.ictsc への http 通信を行うコンテナ
docker logs connection-check コマンドより、通信が成功するかどうかを確認できます。
curl http://hpn.finals.ictsc の戻り値が0である場合 (つまり、通信が成功すると) connection successed! と出力されます。
curl http://hpn.finals.ictsc の戻り値が0以外である場合 (つまり、通信が失敗すると) connection failed! と出力されます。
connection-check イメージを作成する Dockerfile は /root/docker/connection-check 以下に存在します。
備考
hpn.finals.ictsc は 192.168.22.1 へ解決されるドメインとなります。
Docker Image の再作成による内容は変更は行わないでください。
connection-check コンテナの起動は以下のコマンドで動作します。
docker run -itd --name connection-check local/connection-check
開始時の状態
docker logs connection-check コマンドを実行すると connection failed! が出力される
問題のゴール状態
基準点
docker logs connection-check コマンドを実行すると connection successed! が出力される
満点
なぜこの問題が生じるかを説明し、解決法その2 (Routerにログインできる場合の解法) を述べる
提出すべきもの
基準点
connection-check コンテナが、 connection successd! を返すように修正し、その解決法を上司に報告する。
満点
問題の解決法その2 (Routerにログインできる場合の解法) を述べ、原理を先輩に報告する。
The text was updated successfully, but these errors were encountered: