2
2

More than 1 year has passed since last update.

もう逃げない。基礎から学ぶDocker入門 / Dockerの基本操作(ログの出力, コンテナの中でプロセスを実行する方法, 使用していない Docker オブジェクトの削除)(3/9)

Last updated at Posted at 2021-09-24

はじめに

今まで、全然理解できていなくて逃げてたDockerに関して、しっかり理解していこうと思います。

コレまで、便利なんだろうなと思いながらも、逃げてました。

なので、開発環境では使いこなせるスキルにまでは理解したいと思います。

あと、暗記してたDockerコマンドを1つ1つ理解していきます。

以下のような順番で勉強していきます。

Dockerの基本操作

よく使うであろうコマンド操作を覚えていきます。

  • ログの出力(docker container logs
  • 指定したコンテナの中でプロセスを実行する方法(docker container exec
  • 使用していない Docker オブジェクトの削除(docker system prune

ログの出力

ログを出力させたいので、再度、dockerコンテナを起動させます。

docker container run -d -p 8000:8000 --name webrick sample/webrick:latest                                                                                                   

dac0475130a1f393026dc81ca6d0ea0207ac1c1268f499c6a77880ec38fc5207

前回にはないオプション(-d)が追加されましたね。

これは、デタッチドモードと言って、バックグラウンドでcontainerを立ち上げるオプションです。

なぜこれをするかというと、バックグラウンドでcontainerを立ち上げると、画面が出力結果で支配されるので(docker container run はデフォでフォアグラウンドモード)。

フォアグラウンドモード( -d を指定しないデフォルト )では、 docker run はコンテナの中でプロセスを開始でき、操作画面上(コンソール)にプロセスの標準入力、標準出力、標準エラーを取り付け(アタッチ)できます。

ここで、http://localhost:8000/にアクセスしてから、以下のログ出力コマンドを実行してみましょう。

docker container logs webrick

[2021-09-24 05:03:04] INFO  WEBrick 1.6.1
[2021-09-24 05:03:04] INFO  ruby 2.7.4 (2021-07-07) [x86_64-linux]
[2021-09-24 05:03:04] INFO  WEBrick::HTTPServer#start: pid=1 port=8000
172.17.0.1 - - [24/Sep/2021:05:10:40 UTC] "GET / HTTP/1.1" 200 5
- -> /
172.17.0.1 - - [24/Sep/2021:05:10:41 UTC] "GET /favicon.ico HTTP/1.1" 200 5
http://localhost:8000/ -> /favicon.ico

こんな感じです。

指定したコンテナの中でプロセスを実行する方法

指定したコンテナの中でプロセスを実行するためのコマンドdocker execを見ていきます。

これは、実行中のdockerコンテナに対して、別のコマンドを実行したいときに役立ちます。

僕自身も実務でよく使いますこれ(よくわからず使ってました :angel:)。

docker container exec webrick ruby -v

# docker container exec コンテナ名 実際のコマンド

ruby 2.7.4p191 (2021-07-07 revision a21a3b7d23) [x86_64-linux]

今回は、コンテナ(webrick)にあるrubyのバージョンを出力しているだけです。

実務ではよく以下のコマンドを実行していました。

docker exec -it {container code} sh

-i: Keep STDIN open even if not attached

標準入力を開き続けるという意味です。

-t: Allocate a pseudo-TTY
疑似ttyを割り当てる。

TTYは、TeleTYpewriter の略。

tty【コマンド】とは、コンピュータさんに対する命令文(コマンド)のひとつであり、接続端末のデバイスファイル名を表示するときに使うUnix系のコマンド

ということは、-itは、dockerコンテナ内で標準入力を開き続け、そこを操作出来るようにする。

実行コマンドはshなので、dockerコンテナ内でシェルを起動するという意味なのでしょうね。

docker container ls

CONTAINER ID   IMAGE                   COMMAND                  CREATED          STATUS          PORTS                                       NAMES
dac0475130a1   sample/webrick:latest   "ruby /var/www/main.…"   44 minutes ago   Up 44 minutes   0.0.0.0:8000->8000/tcp, :::8000->8000/tcp   webrick

なので、以下は同じ結果になりました。

docker exec -it dac0475130a1 sh
docker container exec -it dac0475130a1 sh
docker exec -it webrick sh
docker container exec -it webrick sh

使用していない Docker オブジェクトの削除

dockerに慣れてくるのはいいのですが、そうなると、今度は、使わないイメージとかコンテナが肥大化することがよくあるそうです。

ハードディスクの容量を圧迫してしまいますので、消す方法も覚えます。

そのコマンドが以下です。

docker system prune -a

-aは全てのコンテナに対して実行するというやつです。

実際の結果が以下。

docker system prune -a

WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all images without at least one container associated to them
  - all build cache

Are you sure you want to continue? [y/N] y
Deleted Containers:
dac0475130a1f393026dc81ca6d0ea0207ac1c1268f499c6a77880ec38fc5207

Deleted Images:
untagged: sample/webrick:latest
deleted: sha256:a1136785b9176e2a25e7a3a206745ce19cdd5d6c97ae7f53884f7fa5181428e6
deleted: sha256:d589299c6217c3ba7913e0f3fefddcc091d8dd48aab45f6f666403b2e2b44f11
deleted: sha256:8b98db69df51d82145bc4497b07e4033d3c702d5e0fbb05f185511d07c7161d9
deleted: sha256:4ef38426686a8db4b3a4e91cc80fef26c9ff0806740f90bd98673372a4534676
deleted: sha256:bea8a1d9e6d2ee9e446eeeb648847a6f0b6bb8acf7418f56b1ca8fd96dd1b5f6
deleted: sha256:090b8395b21d6777699d86674baa55fa14a6ef8a29e03dfc3460ad216de6f05f
deleted: sha256:044896171174fe4b8e57958fe9540883daedae0bfc4858023469aaa238bd2388
deleted: sha256:7c8e6d275c16b312f3a9fbd14dac058e0925c3071c61f85c14dd85d070567aa2
deleted: sha256:dde6172a7948c5a7c96cc46703d13946bfd47b726decc1acf48abeda64f32ac4
deleted: sha256:f11c0e4e16dc4cc8c0ffac9ac15db9a7c5091f16a86d53cab55306be2d4891a8
deleted: sha256:799760671c382bd2492346f4c36ee4033cf917400be4354c8b096ecef88df34b

Total reclaimed space: 863.7MB

container name sample/webrickが消えたことがわかりますね!

ハードディスクから863.7MBの容量が空いたこともわかりますね。

これが、使わないイメージ・コンテナの削除の方法です。

以上です。

アウトプット100本ノック実施中

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2