Beyond The Limit

はじまりは2001年

Dockerメモ3

Dockerコンポーネント

  • Docker エンジン:Docker本体のこと
  • Docker コンテナ:Dockerエンジンが実行するコンテナのこと
  • Docker クライアント:Dockerデーモンが提供する各種コマンドなどのIFのこと
  • DockerコンテナはホストOS上で複数同時に起動することができる、ホストOSから見ると分離された名前空間として見える

コンテナの起動

  • 例えば"/bin/bash"でコンテナを起動した後のプロンプトで"root@11450a5780f2"等と表示されるが、@の後ろはコンテナID
  • hostnameはコンテナIDが自動的に設定されるが、-hオプションで設定することも可能
  • コンテナをバックグラウンドで稼働させる場合は-dオプションを強する
  • 起動のコマンドはdocker start <container id>でOK、起動後はdocker psで確認ができるが、バックグラウンドで動いている

コンテナのイメージ化

  • 作成したコンテナをイメージ化することができる
  • docker commit <container id> <repository name>:<tag name> -- docker commit c7c2983acd46 local:test-run こんな感じ
  • アプリケーションごとにコンテナを作成してイメージ化しておけば、必要な時に必要なものをすぐ実行可能な状態でコンテナの再利用をすることができる
  • docker images --no-truncで本来のイメージID64文字で表示が可能、通常は12文字。イメージIDのみ出力したい場合はdocker images -qでOK

シェル変数にコンテナIDを入れると便利

  • abc=$(docker run -d --name centos-test -i -t centos:centos6.6 /bin/bash)を実行すると、コンテナIDがabcに代入される
  • コンテナIDは長いので便利そう?

コンテナの停止

  • docker stop <container id>でOK

コンテナのアタッチ

  • 一度停止したコンテナはdocker start -i -a <コンテナID>で再接続ができる -- iは標準入力を受け付けるオプション、-aはアタッチ
  • バックグラウンドで動作しているコンテナはそのままdocker attach <container id>でOK

コンテナとコンテナイメージの削除

  • docker rm <container id>でコンテナは削除可能 -- docker ps -a | awk '{print $1}' | xargs docker rmでまとめて一括で消せる -- 起動中のコンテナは削除できないが、-fオプションを付与することで強制的に削除可能
  • docker rmi <Image id>でコンテナは削除可能 -- docker images | awk '{print $3}' | xargs docker rmiでまとめて一括で消せる

コンテナの自動廃棄

  • docker runコマンドに--rmオプションを付与して起動すると、コンテナ停止時に自動的に廃棄される
  • -dオプションとはセットで利用できないので注意