はじめに
今まで、全然理解できていなくて逃げてたDockerに関して、しっかり理解していこうと思います。
コレまで、便利なんだろうなと思いながらも、逃げてました。
なので、開発環境では使いこなせるスキルにまでは理解したいと思います。
あと、暗記してたDockerコマンドを1つ1つ理解していきます。
以下のような順番で勉強していきます。
- Dockerの概要(1/9)
- Dockerの基本操作(イメージの作成, コンテナの起動, 停止, 削除)(2/9)
- Dockerの基本操作(ログの出力, コンテナの中でプロセスを実行する方法, 使用していない Docker オブジェクトの削除)(3/9) 今ここ
- Dockerfileを使用したサーバー構築(座学編)(4/9)
- Dockerfileを使用したサーバー構築(実践編)(5/9)
- Docker Composeの概要(座学編)(6/9)
- Docker Composeのよく使う基本操作(7/9)
- Docker Composeを使ってRailsの環境を構築する(8/9)
- Docker上に構築したRailsをHeroku(本番環境)にデプロイ(公開)する(9/9)
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コンテナに対して、別のコマンドを実行したいときに役立ちます。
僕自身も実務でよく使いますこれ(よくわからず使ってました )。
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本ノック実施中