👏

Dockerについて覚書

2023/07/20に公開

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 <ビルドコンテキストのパス>

https://zenn.dev/k2323/articles/75162b912ce7e6#dockerfileからdockerイメージを作成する

イメージからコンテナを生成/起動/停止

イメージからコンテナを生成
イメージがローカルに存在しない場合、ダウンロード(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その他

https://zenn.dev/k2323/articles/75162b912ce7e6

Discussion