情弱のDockerメモ

もっかいちゃんとDockerのおべんつよし直そうと思って、色々と学んだことのメモです。

Dockerfile

Dockerfileとは

こいつからimageを作成する。作成されるのはコンテナではないので注意。

RUNとCMDとENTRYPOINT

コマンドを実行するプロパティは3つある。

  • RUN : image作成時に実行される。
  • CMD : imageからコンテナを作成時(Docker run時)に実行される。
  • ENTRYPOINT : CMDと同じ。

という違いがあるので注意。各種アプリケーションとかをあらかじめ入れておきたいときは、RUNを使うべき。CMDとENTRYPOINTはそれぞれDockerfileに1つしか書けない。両方書いてあると、なんか別の挙動するらしいので、どっちかを使うのがいい?

EXPOSE

指定すると、その番号のポートを外に向けて解放する。

$ docker run -p <host port>:<container port>

とやれば外からコンテナにアクセス可能。Dockerfile内の記述だけでホストのポートと対応づけることはできない。

Dockerコマンド

  • -t : 擬似ターミナル起動。-iと合わせて対話的にコンテナ内操作ができる。
  • docker attach <container> : 動いているコンテナ内に入れる。
  • -v <host path>:<container path> : コンテナのディレクトリをホストのディレクトリにマウントできる。加えた変更は相互に反映される。
  • commit <image name>:<tag> : 新しくイメージをコミット。

Docker-compose

複数のコンテナを立ててそいつらのネットワークとか構築できる。run時に渡していたオプションを、全部docker-compose.yml内に記述できる。便利。