dockerのノート

公開:2021/02/21
更新:2021/02/21
3 min読了の目安(約3100字TECH技術記事

はじめ

dockerのノート

コンテナの学習やっていく

https://docs.docker.com/docker-for-mac/apple-m1/

M1 Macの場合はこちらの記事を参考に
Rosettaとやらをインストールしてdocker を利用する。

softwareupdate --install-rosetta

M1 Macで通らなかった動作しなかったコマンドについては
動かなかった旨を残しておきますが、どうやらnginx程度はちゃんと動く模様。

あると便利なコマンド

watch コマンド
brew install watch でインストールできる。
コマンドの実行結果を常に監視したい時に便利

watch -t "docker ps"

実行環境

M1 MacBook macOS Big Sur version 11.2
MacBook Air (M1, 2020) Apple M1 メモリ 16GB SSD 256GB
Docker version 20.10.3, build 48d30b5

または
Windows 10 SurfaceBook

docker の操作コマンド

基本

  • プロセスを表示
docker ps
  • イメージを取得 (Pull)
# nginx を取得する。
docker pull nginx
  • イメージを表示 (List)
docker images
  • イメージの履歴を表示 (History)
docker history nginx
  • イメージを削除 (Delete Docker Image)
docker rmi nginx
docker images

nginx を操作

nginxサーバーのコンテナを取得して起動して停止する例

# nginx のdockerイメージを取得する。
docker pull nginx
# nginx のdocker イメージを起動する。
docker run -p 80:80 --name nginx nginx
# 作動中のコンテナ一覧を表示 (List)
docker ps
# Webページをcurlを使って取得
curl localhost:80
# nginx コンテナを停止
docker stop nginx
# 停止中のコンテナも全て一覧表示
docker ps --all
# nginx コンテナを削除
docker rm nginx
# 停止中のコンテナも全て一覧表示
docker ps --all

nginx を操作(バックグラウンド)

nginxサーバーのコンテナを取得してバックグランド起動して停止する例

# nginx のdockerイメージを取得する。
docker pull nginx
# nginx のdocker イメージを起動する。
docker run --detach -p 80:80 --name nginx nginx
# 作動中のコンテナ一覧を表示 (List)
docker ps
# Webページをcurlを使って取得
curl localhost:80
# nginx コンテナを停止
docker stop nginx
# 停止中のコンテナも全て一覧表示
docker ps --all
# nginx コンテナを削除
docker rm nginx
# 停止中のコンテナも全て一覧表示
docker ps --all

nginx の操作(nginx内を探索する)

nginxのConfigファイルを見つける

# nginx のdocker イメージを起動する。
docker run --detach -p 80:80 --name nginx nginx
# 作動中のコンテナ一覧を表示 (List)
docker ps
# Webページをcurlを使って取得
curl localhost:80
# sh でコンテナに乗り込む
docker exec -it nginx sh
# ファイルを探索する
find / -type d -name nginx | xargs grep -r  html
# nginx コンテナを停止
docker stop nginx
# 停止中のコンテナも全て一覧表示
docker ps --all
# nginx コンテナを削除
docker rm nginx
# 停止中のコンテナも全て一覧表示
docker ps --all

nginx を操作する(トップページを上書きする)

nginx のデフォルトページを「Hello,World」に書き換える。

# nginx のdocker イメージを起動する。
docker run --detach -p 80:80 --name nginx nginx
# 作動中のコンテナ一覧を表示 (List)
docker ps
# Webページをcurlを使って取得
curl localhost:80
# sh でコンテナに乗り込む
docker exec -it nginx sh

# ファイルを探索する
find / -type d -name nginx | xargs grep -r  html
# 格納先されているデフォルトのWebページを表示
cat /usr/share/nginx/html/index.html
# Hello,Worldで上書き
echo "Hello World" > /usr/share/nginx/html/index.html
# sh から抜ける
exit

# Webページをcurlを使って取得 「Hello,World」と表示されていればOK
curl localhost:80

# nginx コンテナを停止
docker stop nginx
# 停止中のコンテナも全て一覧表示
docker ps --all
# nginx コンテナを削除
docker rm nginx
# 停止中のコンテナも全て一覧表示
docker ps --all

docker rmi と docker rmの違い

docker イメージを削除するのは rmi
docker コンテナを削除するのは rm

他、コンテナのデバッグに使えそうなコマンド

  • コンテナのログを表示 (Log)

コンテナ内の実行ログを確認できる。
例)
localhost:80にcurlした時に残るnginxコンテナのログ

172.17.0.1 - - [21/Feb/2021:13:07:45 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.64.1" "-"

docker logs nginx
  • コンテナのメタデータを見る (Inspect Docker container)
docker inspect nginx