dockerのハマりどころとしてEXPOSEが理解できないというのがあると思う。
EXPOSEは書いただけで何か動作が変わるといったものではなく、他の機能から参照されて意味を持つ。
dockerに入門したてだとEXPOSEを指定しないとコンテナにネットワーク接続できないと勘違いしてしまったりするがそんなことはない。
EXPOSEしなくてもdocker run -pオプションでポートを外部公開できるし、dockerネットワークのIPを使ってコンテナ間もしくはホスト・コンテナ間で通信可能だ。
僕の知っている限り、EXPOSEの指定はdocker run -PもしくはDockerのlink機能を使ってコンテナ間連携をするときだけ意味を持つ。
doker run -PはEXPOSEしているすべてのポートをpublishする。
マッピングの指定をしないのでdockerが勝手にホストのポートを割り当てる。
docker run --link は連携対象のコンテナを指定するとEXPOSEしているポートに接続するための環境変数を付けてコンテナを起動する。
linkのドキュメント:
https://docs.docker.com/userguide/dockerlinks/
(この記事の情報は docker ver0.11.1 にて確認しています)
0 件のコメント:
コメントを投稿