とーますメモ

Ruby on Rails / Goなどの学習メモ

【Docker】よく使うコマンドまとめ

バージョン確認

$ docker version

index.docker.ioからイメージ取得

$ docker pull イメージ名[:タグ名]

イメージ一覧

$ docker images

イメージ詳細

$ docker inspect [イメージ名]

イメージ検索(※前方一致で検索される)

$ docker search ubuntu

// 人気のあるイメージの検索
$ docker search --stars=30 ubuntu

イメージの削除

$ docker rmi [イメージ名]

※イメージに基づくコンテナが存在する場合「-f」オプションを指定しないと削除できない。

コンテナ生成/起動

$ docker run [オプション] イメージ名[:タグ名] [引数]

// 「nginx」イメージから「my_nginx」というコンテナ名を生成し、バックグランドで動作するよう設定する。
またコンテナの80ポートに、ホストの8080ポートからアクセスできるように設定する。
$ docker run -d -p 8080:80 --name my_nginx nginx

// コンテナ起動後、bashを使用する場合は -iおよび-tを使用する必要がある。オプションの説明は以下。
$ docker run -it コンテナ名 /bin/bash

※主なrunオプションの意味

  • d, --detach(Run container in background and print container ID)・・・コンテナをバックグランドで起動する。その後コンテナIDを出力する。
  • i, --interactive(Keep STDIN open even if not attached)・・・標準入力を開く(バックグランド(デタッチド)モードの場合でも)
  • t, --tty(Allocate a pseudo-TTY)・・・仮想(tty)端末を割り当てる
  • p, --publish list(Publish a container's port(s) to the host)・・・ポートを割り当てる
  • v, --volume list(Bind mount a volume)・・・ホストのディレクトリをコンテナにマウントする。

run実行時にイメージのタグ名を指定しない場合、デフォルトで「latest」のタグが暗黙的につく。
また-pや-vなどの設定は、コンテナ作成後はできないようだ。
Docker - すでに作ったコンテナでホスト側ディレクトリをマウントするには?(60233)|teratail


コンテナ状態確認

// 現在動いているコンテナ一覧
$ docker ps

// 停止しているコンテナも全て含めたコンテナ一覧
$ docker ps -a

停止中のコンテナをスタート

$ docker start コンテナ名

起動中のコンテナを停止

$ docker stop コンテナ名

停止中のコンテナを削除

$ docker rm コンテナ名

起動中のコンテナでコマンド操作

$ docker exec -it コンテナ名 /bin/bash

起動中のコンテナのログ採取

$ docker logs -ft コンテナ名

※logsオプションの意味

  • f, --follow(Follow log output)・・・リアルタイムでログを監視。
  • t, --timestamps(Show timestamps)・・・ログの先頭にタイムスタンプがつく。

DockerfileからDockerイメージを構築

$ docker build [オプション] パス/URL

コンテナからイメージ作成

// docker commit [オプション] コンテナ識別子 [イメージ名[:タグ名]]
// (例)コンテナからイメージの作成
docker commit -a "TEST Commit" my_nginx thoames/webfront:1.0