Docker コマンド
Docker 初心者の私が、よく使いそうなコマンドをまとめておく。(なぜなら、使わなくなるとすぐ忘れちゃうから。)
ありもののDocker イメージを引っ張ってきて、使うだけであれば、これくらいでいけるかな。
まだ、DockerFileを作るレベルには至っていないので、そのくらいのレベル感で。
Docker イメージ取得
docker pull NAME[:TAG]
でDocker イメージを取得する。
docker pull ubuntu:16.04
docker pull ubuntu:latest
Docker イメージ一覧
> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 16.04 fe3b34cb9255 16 months ago 119MB
コンテナの作成・起動
docker run -it IMAGE
でイメージからコンテナを新規に作成して、起動する。
--name NAME
のオプションで、コンテナに名前を付けられる。
-it
は、ttyをコンテナプロセスに割り当てる。ttyって何?って思うけど、擬似端末のことで、この例の場合、ubuntuのターミナルに接続する。ってことを覚えておけばOKかな。
-d
を付けると、バックグラウンドで実行。
-itd
と-it
にくっ付けても、-it -d
でも同じ。
docker run -it ubuntu:16.04
docker run -it --name ubuntu1604 ubuntu:16.04
run
は実行するたびに、新しいコンテナが作られるので注意。
作成済みのコンテナを起動する場合は、start
を使用する。
起動中のコンテナ一覧
起動中のコンテナ一覧を確認。
-a
を付けると、停止中のコンテナも表示される。
-s
で、コンテナサイズも表示。
> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a48b4a8eb26e ubuntu:16.04 "/bin/bash" 6 months ago Up 7 seconds ubuntu1604
コンテナに接続
docker exec CONTAINER bash
で起動中のコンテナに接続する。
CONTAINER
には、作成時に--name
で名前を付けたものを指定する。(この場合、ubuntu1604
)
docker exec -it ubuntu1604 bash
docker exec CONTAINER COMMAND
で、コマンドを実行。
docker exec -it ubuntu1604 ls
ファイルコピー
docker cp SRC_PATH CONTAINER:DEST_PATH
でローカルのファイルをコンテナ内にコピーする。
docker cp ./some_file ubuntu1604:/work
コンテナの起動・停止
コンテナを起動、停止するためには、start
、stop
を使用する。
restart
で両方同時に可能。
docker start ubuntu1604
docker stop ubuntu1604
docker restart ubuntu1604
コンテナの削除
コンテナを削除するためには、rm
を使用する。(もちろん、削除前には停止が必要)
docker rm ubuntu1604
コンテナの詳細情報
コンテナの詳細な情報は、inspect
で見ることができる。(lessで見るのがいいかな)
docker inspect ubuntu1604 | less
コンテナのCPU・メモリ使用率
コンテナのCPU・メモリ使用率などのリソースの使用状況は、stats
で確認する。
docker stats ubuntu1604
コンテナのログ
コンテナのログは、logs
で確認できる。
docker logs ubuntu1604
以下のオプションが便利。docker logs -n 100 ubuntu1604
など。
オプション | 説明 |
---|---|
--tail 100, -n 100 | 最後から100行 |
--follow, -f | ログ出力を続ける |
--timestamps, -t | タイムスタンプを表示 |
--since 2023-02-20T00:00:00Z --since 43m |
2023-02-20T00:00:00〜を表示 43分前~を表示 |
--until 2023-02-25T00:00:00Z --until 43m |
〜2023-02-25T00:00:00を表示 ~43分前を表示 |
コンテナのログは、以下のファイルに保存されている。
/var/lib/docker/containers/[CONTAINER ID]/[CONTAINER ID]-json.log
docker inspect [CONTAINER] | grep LogPath
でパスを確認できる。
いつの間にか巨大サイズになっているので、要注意。