もっかいちゃんと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
内に記述できる。便利。