【Docker】Docker ~ 入門編 ~

■ はじめに

Hello World (Nginx) でDockerの一連作業フローを理解する

目次

【0】遷移図
【1】Docker imageを取得
【2】Docker imageを一覧表示
【3】Docker imageの 履歴 を表示
【4】Docke Image 削除
 1)補足:エラー「unable to remove repository reference "nginx"」が表示されたら
【5】操作例
 1)nginx の場合
 2)flink:1.18.0 の場合

【0】遷移図

                       +------------+
                       | Docker Hub |
                       +------------+
                             | ↑
                        pull | | push
                             ↓ |
+------------+  build  +--------------+ rmi
| Dockerfile | ------> | Docker Image | ------> Deleted
+------------+         +--------------+
                  ↙ ↗  create | ↑ commit
          run ↙ ↗ commit      ↓ |
+-----------+  stop   +-----------+ rm
| Container | ------> | Container | ------> Deleted
| (Running) | <------ | (Stopped) |
+-----------+   run   +-----------+

【1】Docker imageを取得

# nginxの場合
docker pull nginx

新コマンドの場合

# nginxの場合
docker image pull nginx

# flink1.18.0の場合
docker image pull flink:1.18.0

【2】Docker imageを一覧表示

docker images

新コマンドの場合

docker image ls

【3】Docker imageの 履歴 を表示

# どのように nginx が構築されたか表示
docker history nginx

https://docs.docker.jp/engine/reference/commandline/history.html

【4】Docke Image 削除

docker rmi nginx

# 確認
docker images

新コマンドの場合

docker image rm nginx

1)補足:エラー「unable to remove repository reference "nginx"」が表示されたら

* 以下の関連記事を参照のこと

Docker によるトラブルシューティング
https://dk521123.hatenablog.com/entry/2017/09/24/162257

【5】操作例

1)nginx の場合

# nginx のdockerイメージを取得する。
docker pull nginx

# nginx のdocker イメージを起動する。
# docker run -p 80:80 --name nginx nginx
# --detach: バックグランド起動
docker run --detach -p 80:80 --name nginx nginx

# 作動中のコンテナ一覧を表示
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

2)flink:1.18.0 の場合

# flink:1.18.0 のdockerイメージを取得する。
docker image pull flink:1.18.0

# Dockerイメージを取得できたか確認
docker image ls

# flink:1.18.0 のdocker イメージを起動し、内部に入る
docker run --name flink -it flink:1.18.0 /bin/bash
# [構文] docker run --name <コンテナ名> -it <イメージ> <実行コマンド>
# [-it] -i or --interactive (標準入力) / -t or --tty (疑似端末)

# 内部を探索
# https://dk521123.hatenablog.com/entry/2014/11/28/162708  
# で扱った「/etc/apt/sources.list」を除く

# コンテナから出る場合
exit

参考文献

https://qiita.com/ymd65536/items/8d956727a1a63944a9be

関連記事

Docker ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2020/04/24/160044
Docker ~ Windows / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2017/09/23/235818
Docker ~ Proxy環境下でDockerを使用する ~
https://dk521123.hatenablog.com/entry/2023/11/30/004707
WSL2 ~ Docker-CE / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2021/11/14/224428
WSL ~ Docker-CE + Genie / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2021/11/03/003836
Docker Desktop / WSL2 ~ Windows / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2020/12/08/165505
Docker ~ Linux / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2018/04/10/234030
Docker ~ docker を sudo なしで実行する ~
https://dk521123.hatenablog.com/entry/2023/11/22/000000
Docker ~ 基本編 / docker network ~
https://dk521123.hatenablog.com/entry/2022/04/30/000000
 Docker ~ 基本編 / Data Volume ~
https://dk521123.hatenablog.com/entry/2018/09/08/222100
Docker ~ 基本編 / Dockerfile ~
https://dk521123.hatenablog.com/entry/2020/04/14/000000
Docker ~ 基本編 / docker imageコマンド ~
https://dk521123.hatenablog.com/entry/2020/04/13/000000
Docker ~ 基本編 / docker container コマンド ~
https://dk521123.hatenablog.com/entry/2022/01/20/000000
Docker ~ 基本編 / レポジトリに関するコマンド ~
https://dk521123.hatenablog.com/entry/2023/01/21/000000
脆弱性エラー対応時に役立ったDockerコマンド
https://dk521123.hatenablog.com/entry/2024/02/03/020736
Docker ~ ファイルをコンテナにコピー ~
https://dk521123.hatenablog.com/entry/2022/04/27/000000
Docker ~ クリーンアップ / prune ~
https://dk521123.hatenablog.com/entry/2023/07/17/230956
Docker ~ Docker Hub への登録 ~
https://dk521123.hatenablog.com/entry/2024/01/21/125706
Docker ~ Dockerアンチパターン
https://dk521123.hatenablog.com/entry/2023/09/28/000000
Dockerfile / Docker Compose でシェルを実行する
https://dk521123.hatenablog.com/entry/2023/07/21/234509
Docker compose ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2022/04/28/000000
Docker compose ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2022/05/21/222910
Docker compose ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2020/04/11/000000
Docker compose ~ docker-compose.yml ~
https://dk521123.hatenablog.com/entry/2020/12/18/152949
Docker compose ~ Version 2 ~
https://dk521123.hatenablog.com/entry/2023/01/02/000000
Docker compose ~ PostgreSQL
https://dk521123.hatenablog.com/entry/2023/07/20/025544
Docker compose ~ Pgweb/pgAdmin ~
https://dk521123.hatenablog.com/entry/2023/08/10/111919
Docker ~ トラブルシュート方法 ~
https://dk521123.hatenablog.com/entry/2023/12/12/034018
Docker によるトラブルシューティング
https://dk521123.hatenablog.com/entry/2017/09/24/162257
Windows / Docker Desktop でのトラブルシューティング
https://dk521123.hatenablog.com/entry/2020/12/11/115814
Proxy環境下でdocker pullしたらエラー
https://dk521123.hatenablog.com/entry/2024/02/08/144941
Docker ~ GO言語 ~
https://dk521123.hatenablog.com/entry/2022/01/14/102719
Docker ~ Webサーバ ~
https://dk521123.hatenablog.com/entry/2022/02/22/000000
Docker ~ WordPress
https://dk521123.hatenablog.com/entry/2022/04/29/000000
Docker ~ Redmine
https://dk521123.hatenablog.com/entry/2023/01/09/000000
Terminal ~ Windows Terminal ~
https://dk521123.hatenablog.com/entry/2020/12/10/094125
Terminal ~ Cmder ~
https://dk521123.hatenablog.com/entry/2023/12/27/002919
aptコマンド ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2014/11/28/162708