in サーバー

Docker残念部分まとめ

--link


docker run -d -p 80 --name container0 image
docker run -d --link container0:link --name container1 image

でcontainer1の環境変数にcontainer0のIPやらポートの情報が通知されるようになる。素晴らしい!

でも・・・。

docker stop container0
docker start container0

でcontainer0を再開させるとそのコンテナに割り振られてるIPが変わっちゃう。変わっちゃうだけならまだ良いんだけど、container1の環境変数は前のIPのままで連携取れない。対策としてはそれぞれのコンテナ内で相手のIP覚えておいて通知し合うとか?(わざわざ通知しあうプロセス走らせたくない・・・。)

--net


docker run -d -p 80 --name container0 image
docker run -d --link container0:link --name container1 image2
docker run -d --link container0:link --net container:container1 --name container2 image2

最後のコンテナの起動で失敗します。”–net:container:container1″,はcontainer1のnicをcontainer2にも割り振るオプションです。この場合、container0とcontainer1にリンクを貼ってさらにcontainer1のnicをcontainer2にも割り振りしてcontainer2からcontainer0にも通信したい感じです。上記の通り–linkで環境変数にcontainer0のIPなどが入るようになってほしいのですが、container2の起動時にcontainer1のcontainer0へのリンク済みのnicに更にcontainer0のリンクを貼ろうとしてエラーになるようです。
せめてこのエラーを無視してcontainer0への環境変数だけセットして欲しい・・・。
因みにdocker run -d –net container:container1 –name container2 image2だと動きます。
ただし環境変数のセットはありません。


Related Posts

Add a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Anti-spam image