蔵風人

If you try it, it will be somehow & Simple is Best!

[ HOME ]  [ About ]  [ Linux ]  [ CMS ]  [Python]  [ Blog ]


[ 最終更新日:2026-05-28(Thu) 09:06 ]

Docker の主なコマンド〜これだけ覚えろ

1.Dockerとは?

docker のイメージ(4階建てで、Dockerという大家がコンテナーという部屋を用意し、アプリはその中で生活する住人というところか?イメージはコンテナという部屋づくりの「設計図」やらアプリが生活するのに必要な「インフラ」をまとめたものといった感じで覚えました。)

参考:

https://docs.docker.jp/get-started/overview.htmlc

日本語版なら https://matsuand.github.io/docs.docker.jp.onthefly/

用語のイメージ application(コンテナーという部屋を借りる住人) container(イメージをもとに準備される部屋) Docker(OSに潜む大家) OS(大地?地球?)

Dockerのイメージ

OSから見るとDockerに直接命令するのか、Dockerにやらせるべきか?混乱します。

このような覚え方が正しいとは保障できません。あくまで自分用です。

note! 正確には、Dockerのあとは「引数」で、
-d -p などはコマンドの「オプション」です。

2.Docker の準備段階(1回やったらそれで終了)

$ sudo pacman -S docker #Dockerパッケージのインストール(ubuntu,debian系なら sudo apt install docker)
$ sudo systemctl start docker # サービスの開始
$ sudo systemctl enable docker # サービスの有効化
$ sudo pacman -Rs docker # Docker自体の削除
$ sudo rm -r /var/lib/docker # すべてのDockerデーターの削除

note! データーのディレクトリも削除されるます
次のDockerの作業を開始する前には $ sudo systemctl restart docker.service を実行し、 /var/lib/docker ディレクトリの作成から行う必要あり。

3.Docker image 段階(部屋づくり)

(1)どんなイメージが用意されているかを検索

$ sudo docker search image_name #どんな住人用にどんな部屋が作れるか?を検索!

例えば

$ sudo docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 17073 [OK]
linuxserver/nginx An Nginx container, brought to you by LinuxS… 169
bitnami/nginx Bitnami nginx Docker Image 135 [OK]
ubuntu/nginx Nginx, a high-performance reverse
<<以下省略>>

(2)イメージのダウンロード

$ sudo docker pull image_name : tag_name #部屋づくりのための設計図のダウンロード

note! タグ名を省略すると latest が自動的に使われる

例えば

ex. $ sudo pull nginx
Using default tag: latest
latest: Pulling from library/nginx
3b157c852f27: Pull complete
b0badd78900d: Pull complete
7cea0199de6e: Pull complete
1574e1772b11: Pull complete
09af57e2ac73: Pull complete
61db1e71029d: Pull complete
Digest: sha256:10f14ffa93f8dedf1057897b745e5ac72ac5655c299dade0aa434c71557697ea
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

(3)イメージの起動

$ sudo docker run image_name # いよいよ部屋づくり

例えば

$ sudo docker run -d -p 8080:80 –cpus=”2″ –memory=512mb nextcloud

これは、nextcloudをバックグラウンド( -d)で、cpu を 2 memory 512 mb使い、 8080 番ポートへのアクセスを nextcloudの 80 番ポートにフォワード(-p)するよう作成

warning! ネットワークインターフェースは Docker ホストとコンテナーが共用するため IPアドレスは同一

(4)作成済みのイメージを表示

$ sudo docker images #どんな部屋が作成済みであるかを振り返る一覧

例えば

$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest cd4e03b35a8e 2 weeks ago 134MB
hello-world latest 46331d942d63 3 months ago 9.14kB

(5)イメージの消去

$ sudo docker rmi image_name # 設計図を焼却。

4.Docker container 段階

(1)イメージによるコンテナの作成

$ sudo docker start container_ID #イメージをもとに部屋を作成、コンテナーIDという住人(アプリ)に貸すこと。

例えば

$ sudo docker start 468cd8101656
468cd8101656

(2)コンテナ自体の稼働状況

$ sudo docker ps -a #稼働しているコンテナ(部屋)の一覧

例えば

$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
468cd8101656 nginx “/docker-entrypoint.…” 5 minutes ago Up 5 minutes 0.0.0.0:8080->80/tcp, :::8080->80/tcp naughty_galois

(3)コンテナのシステム状況の調査

$ sudo docker stats #cpuやメモリの使用状況を表示 ※リアルタイムで表示 topコマンドのdocker版

例えば

$ sudo docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMstoic_hypatiaIT MEM % NET I/O BLOCK I/O PIDS
468cd8101656 naughty_galois 0.00% 4.012MiB / 3.691GiB 0.11% 9.88kB / 6.88kB 0B / 12.3kB 5

(4)コンテナの中でのコマンドの実行

$ sudo docker run –rm -it IMAGES /usr/bin/bash #管理人が一時部屋の中に入ってコマンドを実行する

note! –rn コマンドが終了するとコンテナを自動削除

note! -it IMAGES 実行するコマンド
コマンドプロンプトが root@container_ID に変更される

例えば

$ sudo docker run –rm -it archlinux /usr/bin/bash
[root@aeae85ee5341 /]# pacman -Syu
:: Synchronizing package databases…
core downloading…
extra downloading…
:: Starting full system upgrade…
resolving dependencies…
looking for conflicting packages…

Package (45) Old Version New Version Net Change Download Size

core/archlinux-keyring 20230504-1 20230704-1 0.00 MiB 1.14 MiB
core/audit 3.1.1-1 3.1.2-1 0.01 MiB 0.38 MiB
core/ca-certificates-mozilla 3.90-1 3.92-1 0.04 MiB 0.37 MiB
core/curl 8.1.2-1 8.2.1-1 0.00 MiB 1.17 MiB
(途中略)
upgrading archlinux-keyring…
==> ERROR: There is no secret key available to sign with.
==> Use ‘pacman-key –init’ to generate a default secret key.
==> Updating trust database…
gpg: next trustdb check due at 2023-09-30
(途中略)
All rules containing unresolvable specifiers will be skipped.
( 7/10) Reloading device manager configuration…
Skipped: Device manager is not running.
( 8/10) Arming ConditionNeedsUpdate…
( 9/10) Rebuilding certificate stores…
(10/10) Reloading system bus configuration…
Skipped: Current root is not booted.
# pacman-keyは更新できないようなので再度実行する
[root@aeae85ee5341 /]#pacman-key –init
==> Generating pacman master key. This may take some time.
gpg: Generating pacman keyring master key…
gpg: revocation certificate stored as ‘/etc/pacman.d/gnupg/openpgp-revocs.d/0DDCFD4726A3F443BD242594CD8547E9E682C08B.rev’
gpg: Done
==> Updating trust database…
gpg: marginals needed: 3 completes needed: 1 trust model: pgp
gpg: depth: 0 valid: 2 signed: 5 trust: 0-, 0q, 0n, 0m, 0f, 2u
gpg: depth: 1 valid: 5 signed: 93 trust: 0-, 0q, 0n, 5m, 0f, 0u
gpg: depth: 2 valid: 70 signed: 26 trust: 70-, 0q, 0n, 0m, 0f, 0u
gpg: next trustdb check due at 2023-09-30
[root@aeae85ee5341 /]# exit #コンテナから出て再起動する
exit
$ sudo docker restart stoic_hypatia
stoic_hypatia
$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ae033e6f6474 archlinux “/usr/bin/bash” 2 hours ago Exited (0) 2 minutes ago stoic_hypatia

(5)コンテナの停止

$ sudo docker stop container_ID #部屋の一部を閉鎖(住人であるアプリは入ったままか?)

例えば

$ sudo docker stop 468cd8101656
468cd8101656

(6)コンテナの再起動

$ sudo docker restart container_ID #部屋の一部を閉鎖し、再び使用できるようにする(大掃除かな?一旦退去させて、もう一度同じ住人に部屋を貸す)

例えば

$ sudo docker restart 468cd8101656
468cd8101656
$ sudo docker rm container_ID #部屋を解体しアプリという住人には退去してもらう。なおイメージという設計図を焼却しない限り run コマンドで再建することが可能。

例えば

$ sudo docker rm 468cd8101656
468cd8101656

note! コンテナーを消去したので コンテナーIDを使った docker start 468cd8101656 を実行すると、以下のエラーが出る
Error response from daemon: No such container: 468cd8101656 Error: failed to start containers: 468cd8101656

5.補足

docker のイメージデータやメタデータの保存先は /var/lib/docker

だからイメージを丸ごと消去する場合はこの保存先ごと消去すれば良い

$ sudo ls -al /var/lib/docker
total 56
drwx–x— 14 root root 4096 Jul 9 20:26 .
drwxr-xr-x 15 root root 4096 Jul 9 20:26 ..
drwx–x–x 4 root root 4096 Jul 9 20:26 buildkit
drwx–x–x 3 root root 4096 Jul 9 20:26 containerd
drwx–x— 3 root root 4096 Jul 9 21:18 containers
drwx—— 3 root root 4096 Jul 9 20:26 image
drwxr-x— 3 root root 4096 Jul 9 20:26 network
drwx–x— 12 root root 4096 Jul 9 21:18 overlay2
drwx—— 4 root root 4096 Jul 9 20:26 plugins
drwx—— 2 root root 4096 Jul 9 20:26 runtimes
drwx—— 2 root root 4096 Jul 9 20:26 swarm
drwx—— 2 root root 4096 Jul 9 20:31 tmp
drwx—— 2 root root 4096 Jul 9 20:26 trust
drwx—–x 2 root root 4096 Jul 9 20:26 volumes