前回まで
what is nextのUsing the build cacheとMulti-stage buildsを読んだ。cacheを使うことでbuildが早くなるよ、containerのステージ?段階?を複数に分けることで最終的なコンテナサイズが小さくなるよとのことだったが両方とも深く理解するには至らなかった。また、昨日は家系ラーメンを晩御飯に食べて、かえってすぐちょっとねるつもりが起きたら朝だったという地獄であったため投稿できなかった
Pubulishing ports
dockerは孤立した環境であるためポートを開けないと通信することができない
docker run -d -p HOST_PORT:CONTAINER_PORT nginx
はnginxというimageに対して、バックグラウンドで(-d)実行かつ、HOST_PORTへのリクエストをCONTAINER_PORTへ向ける(be forwarde)という意味になる。
ホストのポートはなんでもいいよという場合は
docker run -p 80 nginx
となり、ephemeral portとして開放するホストのポートが適当に選ばれる。
それはdocker ps
で確認が可能
try it out
docker run -d -p 8080:80 docker/welcome-to-docker
というコマンドは
services:
app:
image: docker/welcome-to-docker
ports:
- 8080:80
というyamlファイルを'docker compose up'するのと一緒だよと。
特に追体験する必要もなさそうなのでスキップ
Overriding container defaults
Explanation
dockerを起動するときのdefaultのコマンドを変更?追加?することができますと。
portを開放したり、環境変数を設定したり。利用するリソース(メモリ, CPU)を制限したり。
try it out
dockerはby defaultではbridge networkと呼ばれるnetworkに接続される。
特定のシナリオにおいてより高度なネットワークのconfigを制御した場合は自分で定義できる
mynetworkdでdockerを起動するには以下のコマンド
docker network create mynetwork
docker run -p 5432:5432 --network mynetwork postgres
beidgeとcustom networkの違い
- bridgeはIPアドレスのみで互いにcommunicateする。custom networkではnameやaliasが使える
- bridgeは中に入ってるもの同士全部が通信できる
環境変数とかentrypoint(起動時に絶対実行されるプログラム?コマンド)←docker runで上書きできないのyamlの書き方
services:
postgres:
image: postgres
entrypoint: ["docker-entrypoint.sh", "postgres"]
command: ["-h", "localhost", "-p", "5432"]
environment:
POSTGRES_PASSWORD: secret
以上!コマンド押して追体験する気にならない。そろそろドキュメントの後追いじゃなくて、
自分で何かアウトプットを作ったほうがいいかも。明日リモートで時間あるから頑張ろうかな。
今日はここまで