【読書】Docker入門
最近プライベートでPythonを使った分析をしたいと思い、環境を作成しています。
ローカルで動くようになったのは良いのですが、分析の基盤をどのようにサーバにデプロイしたら良いのかも、ローカル以外の環境で動かすために何をして良いのかもよく分かりません。
Dockerを使うことで、分析環境構築自体もある程度楽にしたり、アプリケーションとDBを分けたりしてデプロイができるようになるのかなと思い、興味本位でDockerを学び始めました。
読んだ本
- 作者: 末安泰三
- 出版社/メーカー: ソーテック社
- 発売日: 2016/12/20
- メディア: Kindle版
- この商品を含むブログを見る
学んだこと
- Dockerとは何か
- Dockerのインストール方法
- イメージ・コンテナ・プロセスの関係
- DockerFileについて
- DockerComposeについて
後々使用する際に忘れないように、学んだことを自分なりに噛み砕いて、ざっくり書き残しておこうと思います。
間違っていることや、表現する上での間違いなどあるかと思います、ご指摘など頂けますと幸いです。
Dockerとは何か
仮想化環境のこと。
メリット
- コンテナ技術によって、軽量な仮想化を実現
- 設定ファイルに基づいて、Dockerエンジンで稼働可能なアプリケーション実行環境を簡単に、自動的に構築できる
- アプリケーション実行環境の構成に必要なイメージを配布する「Docker Hub」などのレジストリサービスを利用できる
誰でも簡単に、同じ実行環境を作ることができる。
イメージ・コンテナ・プロセスの関係
- イメージ:コンテナを作成するためのテンプレート
- コンテナ:ホストOSとは隔離されたプログラム実行環境
- プロセス:コンテナ内で稼働中のプログラムの実行状態のこと
Dockerサブコマンド
筆者が推奨していたコマンド8つを覚えました。
- commit:コンテナに加えた変更を基に新しいイメージを作成(コンテナ→イメージ)
- images:イメージの一覧表示
- ps:コンテナの一覧表示
- run:新しいコンテナ内でコマンドを実行
- rm:1つ以上のコンテナを削除する
- rmi:1つ以上のイメージを削除する
- search:レジストリからイメージを検索
- stop(start):稼働(停止)中のコンテナを停止(稼働)
Dockerfile
イメージ作成の手順を記述した設定ファイル。docker build
で設定ファイルに記述されているイメージを作成することができる。
- FROM:作業のベースとなるイメージを指定
- ADD / COPY:イメージ内にファイルやディレクトリをコピーする
- ARG:値をbuildサブコマンド実行時に指定できる変数を設定
- CMD / ENTRYPOINT:コンテナ起動時に最初に実行するコマンドを指定
- ENV:イメージ作成時やコンテナ実行時の環境変数を設定
- EXPOSE:コンテナが通信を待ち受ける通信ポート番号を指定
- LABEL:イメージに付加する管理情報(メタデータ)を指定
- MAINTAINER:イメージ作成者の名前を指定
- ONBUILD:生成したイメージを元に再度イメージをビルドする際に実行するコマンドを指定
- RUN:作業用コンテナ内で実行するコマンドを指定:
- USER:イメージ作成時やコンテナ実行時のユーザを指定
- VOLUME:ホストの一時ディレクトリを割り当てるディレクトリを指定
- WORKDIR:イメージ作成時やコンテナ実行時のカレントディレクトリを指定
Docker Compose
複数コンテナの連携などの管理を簡単に行うことができる。
Docker Composeをインストールして、docker-compose.ymlに記述することで使用できる。
ymlファイルの書き方は、Dockerの公式サイトに書いてある。
最低限必要な命令は、下記の7種類。