Dockerについて覚書
Dockerコンテナとは
各ホスト上でDockerをインストールし、Dockerコンテナを動かす
ホスト環境に左右されずに、開発を共有できる
ホスト環境とは
- Windows
- Mac
など、お使いの開発マシン環境のこと
コンテナの中身はソフトウェアなんでもいれれる
PCが入っているようなもの
- Ubuntu
- MySQL
- Python
などがインストールされているPC
コンテナとして隔離されており、ホストOSに影響されない
(ホストにインストールしたMySQLとコンテナのMySQLが干渉せず共存する)
Dockerイメージとは
コンテナに必要なソフト・環境変数・設定などの情報が入っている
イメージからコンテナが作られる
配布・共有が可能
イメージを共有することで、各環境でコンテナ環境を再現できる
イメージの入手方法
-
docker Hubからダウンロードする
- イメージを登録・配布するサイト
- docker コマンドを使用すると、docker Hubからダウンロードされる
-
Dockerfileからイメージを作成する
コンテナのステータス
Created : イメージから作成された状態、起動していない
Up : 起動中、コマンド実行可能
Exited : 終了、再度Upにすることが可能
docker imageのダウンロード/削除
イメージをダウンロード
docker image pull <IMAGENAME>
ローカルにあるイメージの一覧
docker image ls
ローカルにあるイメージを指定して削除
docker image rm <IMAGENAME>
イメージの詳細情報
docker image inspect <IMAGENAME>
Dockerfileからdockerイメージを作成する
Dockerfileからイメージを作成する
docker image build <ビルドコンテキストのパス>
イメージからコンテナを生成/起動/停止
イメージからコンテナを生成
イメージがローカルに存在しない場合、ダウンロード(image pull)もしてくれる
docker container run <IMAGENAME>
コンテナに任意の名前を設定したい
docker container -run --name <NAME> <IMAGENAME>
標準出力をつなげて起動する場合はオプションを設定
docker container run -it <IMAGENAME>
起動後に任意のコマンドを実行したい場合
docker container run <IMAGENAME> <コマンド>
使い捨てオプション
コンテナがExitedになったとき、すぐに破棄したい
docker container run --rm <IMAGENAME>
バックグラウンドで起動したい(デタッチドモード)
ユースケース
任意のコマンドを実行して、バックグラウンドで動いてほしいとき
docker container run -d <IMAGENAME>
ローカルで起動中(UP)のコンテナの一覧
docker container ls
起動していないコンテナも表示
docker container ls -a
起動中のコンテナを停止
docker container stop <CONTAINERNAME|CONTAINERID>
コンテナを再起動
デーモン(デタッチドモード)で起動する
docker container restart <CONTAINERNAME|CONTAINERID>
コンテナのログ表示
docker container logs <CONTAINERNAME|CONTAINERID>
コンテナの削除
コンテナの破棄
起動中(UP)のコンテナは破棄できない
docker container rm <CONTAINERNAME|CONTAINERID>
起動中(UP)のコンテナでも破棄したい
docker container rm -f <CONTAINERNAME|CONTAINERID>
停止済み(Exited)コンテナを一括削除
docker container prune
任意のコンテナでコマンドを実行
起動中(UP)のコンテナに対して、コマンドを実行したい場合
-itオプションをつけると、整形してくれる
docker container exec <CONTAINERNAME|CONTAINERID> <コマンド>
整形してくれる
docker container exec -it <CONTAINERNAME|CONTAINERID> <コマンド>
デーモンで起動中のubuntuに入りたいときは、コマンドでbash
docker container exec -it <CONTAINERNAME|CONTAINERID> bash
Dockerその他
Discussion