Dockerでよく使うコマンドをメモっておく(割と基本的な部分)

どうも、きっしゅです。

最近は Docker を使って色々とやっているのですが、単純なコマンドは覚えているものの、一括削除とかしようとした時にオプションがなにだったか忘れてしまって毎回調べるなどしていて手間なので、備忘録のためにも記事にしました。

随時更新していく予定です。

Docker でよく使うコマンド

何も考えずコマンドを実行してもいいのですが、意味を理解して実行するためにも、オプションの意味も記載しておきます。

コンテナ表示の基本的なコマンド

停止中のコンテナも含めて表示する

docker ps -a

-a は全てを表示するというオプションです。

起動中のコンテナのIDのみを表示する

docker ps -q

-q はIDのみを表示するというオプションです。

起動中のコンテナの内表示するコンテナを絞る

docker ps -f 'ancestor=hello-world'

-f はフィルターを指定できるオプションです。

指定できるフィルターは下記の通りです。
※個人的によく使うもののみ記載しています。詳しく知りたい方は公式を参照してください。

フィルター項目説明フィルターの指定内容
statusコンテナのステータスでフィルターするcreated, restarting, running, paused, exited
exitedコンテナの終了ステータスでフィルターする任意の終了コード (整数値)
nameコンテナの名前でフィルターする任意の文字列
ancestorコンテナを起動しているイメージ名でフィルターする任意の文字列
idコンテナのIDでフィルターする任意の文字列

フィルター項目と指定内容を=で繋いであげればOKです。

コンテナの一括操作

一括操作は基本的なコマンドの組み合わせで対応できます。

停止している全てのコンテナを削除する

docker rm $(docker ps -aq -f 'status=exited')

$() は簡単に言うと値の参照です。中で実行したコマンドの実行結果を出力してくれます。

なので上記のコマンドの場合だと、$(docker ps -aq -f ‘status=exited’)でステータスが Exited のコンテナのIDを取得しています。

そしてその結果を docker rm に渡しています。

その結果終了停止しているコンテナを一括削除することができます。

Docker のコンテナの一括操作の場合は基本 $(docker -a -q) +α を活用することで実現します。

コンテナの起動・停止・ログ調査系

当然ですが、Docker を使うのであれば起動・停止は必須です。

またコンテナに対して調査をしたいって思うことも多々あります。

それらに関わるコマンドのメモです。

コンテナを起動する

docker run -it <IMAGE_NAME>

-it はこれで1つのオプションではなく -i-t の2つのオプションです。

このオプションはなくても全く問題はないのですが、付けて起動することの方が多いです。

-i はインタラクティブのことで標準入力を受けることができる、というオプションです。コマンドの実行結果を Docker 内で処理したり、ローカルに配置したファイルをコンテナ内で実行できたります。

そして1番のメリットはキー入力を受けつけることができるということです。

ここのメリットに関しては追って説明します。

-t は tty のことで疑似ターミナルのことです。簡単に言うと Docker 内で入力可能なシェルを起動できますよ、って感じです。

簡単なサンプルは下記の通りです。

ibukish@ ~/ % docker run -t python:3.9 python
Python 3.9.7 (default, Sep  3 2021, 20:10:26) 
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

-t を付けることで Python のインタラクティブシェルが起動しました。

もちろんここで Python のコードを入力することができます。
下記では datetime をインポートしてみました。

ibukish@ ~/ % docker run -t python:3.9 python 
Python 3.9.7 (default, Sep  3 2021, 20:10:26) 
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime

結果としては、『反応なし』。理由はコンテナがキー入力を受け付けていないからです。

こうなるとちょっとめんどくさいです。Docker の停止は別でターミナルを起動して docker kill を実行するしかありません。

ここで登場するのが -i です。オプションです。これを付けることでキー入力が可能になります。

なので -it を付けて実行してみます。

起動後に先ほどと同様に datetime をインポートしてみた結果は下記の通りです。

ibukish@ ~/python-lib  % docker run -it python:3.9 python
Python 3.9.7 (default, Sep  3 2021, 20:10:26) 
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
>>> datetime.datetime.now()
datetime.datetime(2021, 9, 26, 5, 27, 16, 261617)
>>> 

しっかりと反応をしてくれます!

説明が長くはなりましたが、-it を付けて困ることはないので基本は付ける方がいいような気がします。

コンテナのログを確認する

docker logs <CONTAINER_ID>

コンテナは起動しているが何かがおかしい、そんな時はログを確認したくなると思います。

そんな時は logs を使えばOKです。docker ps を使ってコンテナのIDを取得して、そのIDを指定してログを確認することができます。

Docker Composeのコマンド

Docker Compose のコマンドは基本的には Docker と同じですが、メモっておきます。

起動・停止系

Docker Compose の起動は通常の Docker とは少し異なります。

docker compose up

ここで注意すべきは、このコマンドを実行するディレクトリに docker-compose.yml が必要だということです。

まとめ

今のところはこんな感じです。

この記事は随時更新していきます。

皆様の役に立ちますと幸いです。

Docker
きっしゅをフォローする
Ibukish Lab+

コメント

タイトルとURLをコピーしました