Docker入門

DockerはLinux仮想環境を構築するソフト。一つのホストLinuxの中で、様々なLinuxディストロを前提とするプログラムを、それぞれコンテナと呼ぶ柔軟な隔離領域を作って起動できる。

各コンテナはホストのLinuxカーネルを共有する。コンテナの元になるLinuxディストロのファイル等(イメージ)は、差分管理される。OSの中にもう一つまるごとOSを走らせるより軽くて速い仮想化。

公式サイト: Docker Community Edition, Docker Hub

公式ドキュメント: インストール dockerコマンド 公式イメージリスト ネットワーク 永続化(Volumeマウントなど) Dockerfile

コマンドヘルプ: docker --help , docker image --help , docker container --help , docker run --help , man docker-run , docker network --help , man dockerd など

2018-05時点でDockerバージョン18.03.1-ceで、ホストがCentOS7やUbuntu18.04などで動作確認している。


Dockerの準備

  1. Docker Community Editionのインストール
  2. dockerコマンドを実行するユーザ

Dockerイメージとコンテナの概要

  1. Dockerの仮想化の特徴と基本用語
  2. イメージのダウンロード

コンテナの基本操作

  1. コンテナのライフサイクルと基本コマンド
  2. pullからrmまでまとめるrunコマンドオプション
  3. コンテナシェルを停止せずにホストシェルに戻る
  4. コンテナのシェルに戻る
  5. コンテナにシェルなどプロセスを追加
  6. ランダムなコンテナ名
  7. Dockerコンテナで何をするか: 三つの使用例

    1. コンテナシェルでパッケージなどをイジる
    2. 一つのサーバプログラムを動かす
    3. たくさんのプログラムを動かす
  8. コンテナで動かすプロセスの数
  9. プロセスID1の終了でコンテナ停止
  10. プロセスIDが1になるのはシェルかコマンドか
  11. フォアグラウンド・モードのコンテナ
  12. バックグラウンド・モードのコンテナ
  13. フォアグラウンドにできないコマンドへの対処
  14. コンテナから新イメージを作る
  15. 読込専用のコンテナ
  16. コンテナの自動再起動

ログ、データ保存、コピー

  1. コンテナの出力をホストから確認
  2. ホスト・コンテナ間でファイルのコピー
  3. データの共有、永続化、一時ファイル
  4. Volumeマウント: --mount type=volume
  5. Bindマウント: --mount type=bind
  6. 一時ファイルならtmpfs: --mount type=tmpfs

ネットワーク設定

  1. デフォルトのブリッジネットワークとdocker0
  2. コンテナが使うDNS
  3. ユーザ定義のブリッジネットワーク
  4. コンテナを公開サーバにするなら--publish

イメージ作成の自動化: Dockerfile

  1. Dockerfileでイメージ作成を自動化
  2. よく使うDockerfileの指令
  3. shell形式とexec形式の違い
  4. CMDとENTRYPOINTの違い
  5. コンテナ終了シグナルとSTOPSIGNAL