最近は 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 が必要だということです。
まとめ
今のところはこんな感じです。
この記事は随時更新していきます。
皆様の役に立ちますと幸いです。
コメント