DockerでUbuntuコンテナを起動する

#環境

- MBP
- Catalina
- DockerForMac

#Ubuntuのイメージ取得~コンテナの起動

これだけでUbuntuが起動しました。
実際に利用するときは「--name」でコンテナ名を明示的に指定しましょう。

尚、/bin/bash は省略しても問題ありません。
-itを忘れるとコンテナを起動してもUbuntuの操作が出来ませんので、忘れないように注意して下さい。

```
% docker run -it ubuntu /bin/bash                                
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
5d3b2c2d21bb: Already exists 
3fc2062ea667: Already exists 
75adf526d75b: Already exists 
Digest: sha256:b4f9e18267eb98998f6130342baacaeb9553f136142d40959a1b46d6401f0f2b
Status: Downloaded newer image for ubuntu:latest

root@3e393476b56a:/# cat /etc/os-release 
NAME="Ubuntu"
VERSION="20.04.2 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.2 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

root@3e393476b56a:/# ls
bin  boot  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

```

#ホストOSに切り替える

Ctrl + p Ctrl + q を押すとホストに切り替えられます。

#ホストからコンテナの状態を確認する

STATUSがUPになっているのが確認出来ます。

```
% docker ps -a 
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS         PORTS     NAMES
3e393476b56a   ubuntu    "/bin/bash"   2 minutes ago   Up 2 minutes             optimistic_easley
```

#タグの確認

タグ名を指定しなかったので、自動でlatestタグのイメージが取得されています。

```
% docker images
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
ubuntu       latest    4dd97cefde62   8 days ago   72.9MB
```

#Ubuntuに操作を戻す（attachする）

```
% docker attach 3e

root@3e393476b56a:/# cat /etc/os-release 
NAME="Ubuntu"
VERSION="20.04.2 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.2 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

root@3e393476b56a:/# 
```

このようにコンテナIDの最初一部を指定するだけでコンテナを指定出来る。
尚、これはコンテナを削除する docker rm などでも同様に使える。

#再度ホストに戻る

```
root@3e393476b56a:/# exit
exit

% docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS                      PORTS     NAMES
3e393476b56a   ubuntu    "/bin/bash"   5 minutes ago   Exited (0) 10 seconds ago             optimistic_easley
```

今度はExitでプロセスを終了させて抜けた為、STATUSがExitedとなり、コンテナの動作が停止していることが確認出来る。

#停止したコンテナを削除する

コンテナはコンテナIDの頭2文字で指定している。

```
% docker rm 3e
3e
```

#dockerイメージを削除する

```
% docker images
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
ubuntu       latest    4dd97cefde62   8 days ago   72.9MB

% docker rmi ubuntu
Untagged: ubuntu:latest
Untagged: ubuntu@sha256:b4f9e18267eb98998f6130342baacaeb9553f136142d40959a1b46d6401f0f2b
Deleted: sha256:4dd97cefde62cf2d6bcfd8f2c0300a24fbcddbe0ebcd577cc8b420c29106869a
Deleted: sha256:95bc1f83306cc7ebaa959492929d6624b0cc1bb6ba61be1cd04fed7d39b002fc
Deleted: sha256:a0fcf305193749a4fe8c9da074c4781a0f1e63f2c5b5a979a88597ada5c74645
Deleted: sha256:aeb3f02e937406fb402a926ce5cebc7da79b14dbcb4f85a5ce0e3855623cec80

% 
```

#execコマンドについて

通常コンテナ内でシェルを操作していて、exitを実行すると下記のようにコンテナは終了状態となり、停止してしまう。
これを避けるために、docker execコマンドがある。

```
% docker run -it ubuntu          
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
5d3b2c2d21bb: Pull complete 
3fc2062ea667: Pull complete 
75adf526d75b: Pull complete 
Digest: sha256:b4f9e18267eb98998f6130342baacaeb9553f136142d40959a1b46d6401f0f2b
Status: Downloaded newer image for ubuntu:latest

root@7c9389b7d90e:/# 
root@7c9389b7d90e:/# 
root@7c9389b7d90e:/# 
root@7c9389b7d90e:/# exit
exit

% docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED              STATUS                      PORTS     NAMES
7c9389b7d90e   ubuntu    "/bin/bash"   About a minute ago   Exited (0) 19 seconds ago             hungry_newton
```

#execコマンドでコンテナを操作する

```
% docker exec -it 7c /bin/bash
root@7c9389b7d90e:/# 

root@7c9389b7d90e:/# cat /etc/os-release 
NAME="Ubuntu"
VERSION="20.04.2 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.2 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

root@7c9389b7d90e:/# 
```

#exitで抜けてコンテナのSTATUSを確認する

このようにSTATUSがUPのままで起動状態であることが確認できる。

```
root@7c9389b7d90e:/# exit
exit

% docker ps                              
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS              PORTS     NAMES
7c9389b7d90e   ubuntu    "/bin/bash"   4 minutes ago   Up About a minute             hungry_newton

```

#コンテナを停止する

```
% docker stop 7c
7c
```

#停止中のコンテナをまとめて削除する(docker container prune）

```
% docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
7c9389b7d90e9bcd0e8eedc74c8eb699c9fac32ae5603189930ff81acbe4d67d

Total reclaimed space: 31B

% docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
```

#docker imageの削除

```
% docker rmi ubuntu
Untagged: ubuntu:latest
Untagged: ubuntu@sha256:b4f9e18267eb98998f6130342baacaeb9553f136142d40959a1b46d6401f0f2b
Deleted: sha256:4dd97cefde62cf2d6bcfd8f2c0300a24fbcddbe0ebcd577cc8b420c29106869a
Deleted: sha256:95bc1f83306cc7ebaa959492929d6624b0cc1bb6ba61be1cd04fed7d39b002fc
Deleted: sha256:a0fcf305193749a4fe8c9da074c4781a0f1e63f2c5b5a979a88597ada5c74645
Deleted: sha256:aeb3f02e937406fb402a926ce5cebc7da79b14dbcb4f85a5ce0e3855623cec80

```