Docker HubのUbuntuを使用して対話型でDockerのコンテナを利用してみる!

Docker HubのUbuntuを使用して対話型でDockerのコンテナを利用してみます。

Ubuntuのコンテナをダウンロードしてbashを実行する!(docker run -it)

$ docker container run -it ubuntu bash
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
6e3729cf69e0: Pull complete 
Digest: sha256:27cb6e6ccef575a4698b66f5de06c7ecd61589132d5a91d098f7f3f9285415a9
Status: Downloaded newer image for ubuntu:latest
root@a11d8355444b:/# ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 00:10 pts/0    00:00:00 bash
root           9       1  0 00:11 pts/0    00:00:00 ps -ef
root@a11d8355444b:/# exit
exit

Ubuntuのイメージを確認する!(docker image ls)

今回は、コンテナのイメージのバージョンを指定しなかったので、TAGがlatestの最新版がダウンロードされたことがわかります。

$ docker image ls
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       latest    6b7dfa7e8fdb   2 weeks ago   77.8MB

Ubuntuのbashを実行したコンテナを確認する!(docker container ps -a)

今回は、コンテナ名を指定しなかったので、自動でコンテナ名が割り当てられ、「crazy_perlman」で作成されたことがわかります。

$ docker container ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED          STATUS                      PORTS     NAMES
a11d8355444b   ubuntu    "bash"    37 seconds ago   Exited (0) 14 seconds ago             crazy_perlman

bashを実行するコンテナをオプション指定なしで実行する!(docker container start)

オプションの機能確認の目的で、オプション指定なしで実行してみます。コマンドプロンプトも表示されません。バックグランドで実行されているような状態なので、「stop」コマンドで停止させます。

$ docker container start crazy_perlman 
crazy_perlman
$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED         STATUS         PORTS     NAMES
a11d8355444b   ubuntu    "bash"    8 minutes ago   Up 3 seconds             crazy_perlman
$ docker container stop crazy_perlman 
crazy_perlman
$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

bashを実行するコンテナにアタッチして実行する!(docker container start -a)

オプションの機能確認の目的で、コンテナニアタッチするオプションを指定して実行してみます。コマンドプロンプトは表示されましたが、コマンド自体は受け付けない状態になっています。

$ docker container ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
$ docker container start -a crazy_perlman 
root@a11d8355444b:/# ps

別のターミナルから、「stop」コマンドで停止させます。

$ docker container stop crazy_perlman 
crazy_perlman

bashを実行するコンテナにターミナルのオプションを追加して実行する!(docker container start -ai)

bashのコンテナにターミナルのオプションを追加して実行してみます。コマンドが受付可能な状態で起動できました。

$ docker container start -ai crazy_perlman
root@a11d8355444b:/# ps
    PID TTY          TIME CMD
      1 pts/0    00:00:00 bash
      9 pts/0    00:00:00 ps
root@a11d8355444b:/# exit
exit

実行中のコンテナにアクセスしてコマンドを実行する!(docker container exec)

「docker container exec」コマンドを使用すると実行中のコンテナ内のコマンドを実行することができます。

$ docker container exec rcrazy_perlman df -h
Filesystem           Size  Used Avail Use% Mounted on
overlay               17G  5.7G   12G  34% /
tmpfs                 64M     0   64M   0% /dev
shm                   64M     0   64M   0% /dev/shm
/dev/mapper/rl-root   17G  5.7G   12G  34% /etc/hosts
tmpfs                886M     0  886M   0% /proc/asound
tmpfs                886M     0  886M   0% /proc/acpi
tmpfs                886M     0  886M   0% /proc/scsi
tmpfs                886M     0  886M   0% /sys/firmware

bash以外のコマンドを実行してみる!(docker container run)

Ubuntuのバージョンを表示してみます。

$ docker container run ubuntu cat /etc/issue
Ubuntu 22.04.1 LTS \n \l

コンテナをまとめて削除する!(docker container prune)

「docker run」を繰り返すとコンテナが溜まっていきます。不要になったら、まとめて消します。

$ docker container ps -a
CONTAINER ID   IMAGE     COMMAND            CREATED             STATUS                       PORTS     NAMES
23582ef155b1   ubuntu    "cat /etc/issue"   2 minutes ago       Exited (0) 2 minutes ago               keen_heisenberg
a11d8355444b   ubuntu    "bash"             About an hour ago   Exited (137) 4 minutes ago             crazy_perlman
$ docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
23582ef155b14fb3530bec634fd3bc84d0469e16a28b4aa0ba4c9e1d1ec512a7
a11d8355444b64aa8a25da5e966ee4ac98b3525e0971ad8aafe84d78b54f48d9

Total reclaimed space: 20B
$ docker container ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

イメージをまとめて削除する!(docker image prune -a)

イメージについてもまとめて削除することができます。

$ docker image prune -a
WARNING! This will remove all images without at least one container associated to them.
Are you sure you want to continue? [y/N] y
Deleted Images:
untagged: ubuntu:latest
untagged: ubuntu@sha256:27cb6e6ccef575a4698b66f5de06c7ecd61589132d5a91d098f7f3f9285415a9
deleted: sha256:6b7dfa7e8fdbe18ad425dd965a1049d984f31cf0ad57fa6d5377cca355e65f03
deleted: sha256:6515074984c6f8bb1b8a9962c8fb5f310fc85e70b04c88442a3939c026dbfad3

Total reclaimed space: 77.8MB
$ docker image ls
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

おわりに

Ubuntuのコンテナを使用して、Dockerのコンテナを対話型で使用するケースを試してました。

参考情報

関連記事

関連書籍(Amazon)