仮想環境Docker のコマンドをどのレベルで使うのか?自分の頭を整理するのに分けて考えました。
2023/08/15
コンテナに入ってコマンドを実行するコマンドを追記
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(大地?地球?) |
OSから見るとDockerに直接命令するのか、Dockerにやらせるべきか?混乱します。
このような覚え方が正しいとは保障できません。あくまで自分用です。
※ 正確には、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データーの削除
※ データーのディレクトリも削除されるため、次のDockerの作業を開始する前には $ sudo systemctl restart docker.service を実行し、 /var/lib/docker ディレクトリの作成から行う必要あり。
3.Docker image 段階(部屋づくり)
$ sudo docker search image_name・・どんな住人用にどんな部屋が作れるか?検索!
ex. $ 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
$ sudo docker pull image_name : tag_name・・部屋づくりのための設計図のダウンロード
※ タグ名を省略すると 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
$ sudo docker run image_name ・・いよいよ部屋づくり
ex. $ sudo docker run -d -p 8080:80 –cpus=”2″ –memory=512mb nextcloud
nextcloudをバックグラウンド( -d)で、cpuを2 memory512mb使い、 8080番ポートへのアク セスを nextcloudの80番ポートにフォワード(-p)するよう作成
※ ネットワークインターフェースは Docker ホストとコンテナーが共用するため IPアドレスは同一。
$ 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
$ sudo docker rmi image_name ・・設計図を焼却。
4.Docker container 段階
$ sudo docker start container_ID ・・イメージをもとに部屋を作成、コンテナーIDという住人(アプリ)に貸すこと。
ex. $ sudo docker start 468cd8101656
468cd8101656
$ sudo docker ps -a ・・稼働しているコンテナー(部屋)の一覧
ex. $ 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
$ sudo docker stats ・・cpuやメモリの使用状況を表示 ※リアルタイムで表示 topコマンドのdocker版
ex. $ 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
$ sudo docker run –rm -it IMAGES /usr/bin/bash ・・管理人が一時部屋の中に入ってコマンドを実行する
※ –rn コマンドが終了するとコンテナを自動削除
※ -it IMAGES 実行するコマンド ・・ コマンドプロンプトが root@container_ID に変更される
ex. $ 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
$ sudo docker stop container_ID・・部屋の一部を閉鎖(住人であるアプリは入ったままか!)
ex.$ sudo docker stop 468cd8101656
468cd8101656
$ sudo docker restart container_ID・・部屋の一部を閉鎖し、再び使用できるようにする(大掃除かな?一旦退去させて、もう一度同じ住人に部屋を貸す)
ex. $ sudo docker restart 468cd8101656
468cd8101656
$ sudo docker rm container_ID・・部屋を解体しアプリという住人には退去してもらう。なおイメージという設計図を焼却しない限り run コマンドで再建することが可能。
ex. $ sudo docker rm 468cd8101656
※ コンテナーを消去したので コンテナーIDを使った docker start 468cd8101656 を実行すると、以下のエラーが出る
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
コメント