【docker】覚えたdockerコマンドをアウトプットします。

# はじめに

先程、下記の記事を投稿しました。
[**【Docker】CentOS7.8のdocker上にnginxを起動**](https://qiita.com/satton6987/items/1e088519efd2d2cab1a1)
その中で覚えたdockerコマンドを本記事にてアウトプットしていきたいと思います。

# コマンド

## バージョン確認

```
docker --version
```

**【実行例】**

```
[root@tspdocker yum.repos.d]# docker --version
Docker version 19.03.9, build 9d988398e7
[root@tspdocker yum.repos.d]#
```

## image関連

### 取得済みのコンテナイメージ確認
- docker image ls

```
docker image ls
```

**【実行例】**

```
[root@tspdocker docker]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              9beeba249f3e        8 days ago          127MB
[root@tspdocker docker]#
```

- docker images

```
docker images
```

**【実行例】**

```
[root@tspdocker docker]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              9beeba249f3e        8 days ago          127MB
[root@tspdocker docker]#
```

### レジストリからイメージの検索

```
docker search <イメージ名>
```

**【実行例】**

```
[root@tspdocker docker]# docker search centos
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
centos                             The official build of CentOS.                   6012                [OK]
ansible/centos7-ansible            Ansible on Centos7                              129                                     [OK]
consol/centos-xfce-vnc             Centos container with "headless" VNC session …   115                                     [OK]
jdeathe/centos-ssh                 OpenSSH / Supervisor / EPEL/IUS/SCL Repos -  …   114                                     [OK]
centos/mysql-57-centos7            MySQL 5.7 SQL database server                   75
imagine10255/centos6-lnmp-php56    centos6-lnmp-php56                              58                                      [OK]
tutum/centos                       Simple CentOS docker image with SSH access      46
centos/postgresql-96-centos7       PostgreSQL is an advanced Object-Relational  …   44
kinogmt/centos-ssh                 CentOS with SSH                                 29                                      [OK]
pivotaldata/centos-gpdb-dev        CentOS image for GPDB development. Tag names …   11
guyton/centos6                     From official centos6 container with full up …   10                                      [OK]
nathonfowlie/centos-jre            Latest CentOS image with the JRE pre-install …   8                                       [OK]
drecom/centos-ruby                 centos ruby                                     6                                       [OK]
centos/tools                       Docker image that has systems administration …   6                                       [OK]
pivotaldata/centos                 Base centos, freshened up a little with a Do …   4
darksheer/centos                   Base Centos Image -- Updated hourly             3                                       [OK]
pivotaldata/centos-mingw           Using the mingw toolchain to cross-compile t …   3
pivotaldata/centos-gcc-toolchain   CentOS with a toolchain, but unaffiliated wi …   3
miko2u/centos6                     CentOS6 日本語環境                                   2                                       [OK]
blacklabelops/centos               CentOS Base Image! Built and Updates Daily!     1                                       [OK]
mcnaughton/centos-base             centos base image                               1                                       [OK]
indigo/centos-maven                Vanilla CentOS 7 with Oracle Java Developmen …   1                                       [OK]
pivotaldata/centos7-dev            CentosOS 7 image for GPDB development           0
smartentry/centos                  centos with smartentry                          0                                       [OK]
pivotaldata/centos6.8-dev          CentosOS 6.8 image for GPDB development         0
[root@tspdocker docker]#
```

### コンテナイメージの取得

```
docker pull <イメージ名>
```
**【実行例】**

```
[root@tspdocker docker]# docker pull miko2u/centos6
Using default tag: latest
latest: Pulling from miko2u/centos6
67f15db7c18f: Pull complete
509a26fd7457: Pull complete
fc1eb556a306: Pull complete
a64d7cf12062: Pull complete
Digest: sha256:e0fde5482f052a54b8215300cbe06ec233e0527d70fe8b89e0b4a81be1b30a3c
Status: Downloaded newer image for miko2u/centos6:latest
docker.io/miko2u/centos6:latest
[root@tspdocker docker]#
```

### コンテナイメージ削除

```
docker rmi <[REPOSITORY] or [IMAGE ID]>
```

**【実行例】**

**①削除するコンテナの確認**

```
[root@tspdocker docker]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              9beeba249f3e        8 days ago          127MB
miko2u/centos6      latest              092ba03e36dd        3 years ago         248MB
[root@tspdocker docker]#
```
→今回は「miko2u/centos6」を削除

**②コンテナ削除**

```
[root@tspdocker docker]# docker rmi miko2u/centos6
Untagged: miko2u/centos6:latest
Untagged: miko2u/centos6@sha256:e0fde5482f052a54b8215300cbe06ec233e0527d70fe8b89e0b4a81be1b30a3c
Deleted: sha256:092ba03e36ddfcb49881eba3b708f461b7334cc7c595411350b04258495bd160
Deleted: sha256:c6c375cf9281546ef63130efff84f0732fc45bfaca98307eb8055b0acd4392ef
Deleted: sha256:0d222776efc8d8e95f128486c9df597c8f97148d700a585e92dd741b1d237d0c
Deleted: sha256:6128ee232c96b4419361c6855b26025ec74e66490b281f900a332f356554843e
Deleted: sha256:b1b065555b8aba5ae83d5d59d611a6b0cc470e9c14b7e4bee081398309e474a5
[root@tspdocker docker]#
```

**③コンテナが削除されていることを確認**

```
[root@tspdocker docker]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              9beeba249f3e        8 days ago          127MB
[root@tspdocker docker]#
```

## コンテナ起動/停止関連

### 起動済みコンテナ確認

```
docker ps
```

|  よく使うオプション  |  内容 |
| ---- | ---- |
|  -a  |  全てのコンテナ情報出力  |

**【実行例】**

- docker ps

```
[root@tspdocker docker]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
b631bfb26b8e        nginx               "nginx -g 'daemon of…"   4 hours ago         Up 4 hours          0.0.0.0:8080->80/tcp   vibrant_engelbart
[root@tspdocker docker]#
```

- docker ps -a

```
[root@tspdocker docker]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
b631bfb26b8e        nginx               "nginx -g 'daemon of…"   4 hours ago         Up 4 hours          0.0.0.0:8080->80/tcp   vibrant_engelbart
[root@tspdocker docker]#
```

### コンテナの作成

```
docker run -it <イメージ名>
```
|  オプションの意味  |  内容 |
| ---- | ---- |
|  -it  |  コンソールに結果を出力  |


こちらのコマンドは、コンテナの作成&起動&ログインを同時にやってくれるコマンドになります。



**【実行例】**

```
[root@tspdocker docker]# docker run -it ubuntu
root@644f6b5a46b9:/#
```

### コンテナの起動

```
docker start <CONTAINER IDまたはNAME>
```
  

**【実行例】**

**①「ubuntu」が停止されていることを確認**

```
[root@tspdocker docker]# docker ps -a | grep ubuntu
644f6b5a46b9        ubuntu              "/bin/bash"              11 minutes ago      Exited (0) 13 seconds ago                          intelligent_hamilton
[root@tspdocker docker]#
```
→「Exited」が表示されていることを確認

**②「ubuntu」を起動する**

```
[root@tspdocker docker]# docker start 644f6b5a46b9
644f6b5a46b9
[root@tspdocker docker]#
```
→「644f6b5a46b9」はコンテナID

**「ubuntu」が起動されていることを確認**

```
[root@tspdocker docker]# docker ps -a | grep ubuntu
644f6b5a46b9        ubuntu              "/bin/bash"              12 minutes ago      Up 8 seconds                               intelligent_hamilton
[root@tspdocker docker]#
```
→「Up」になっていることを確認

### コンテナの停止(コンテナにログインしていない場合)

```
docker stop <CONTAINER IDまたはNAME>
```

**【実行例】**

**①「ubuntu」が起動していることを確認**

```
[root@tspdocker docker]# docker ps -a | grep ubuntu
644f6b5a46b9        ubuntu              "/bin/bash"              23 minutes ago      Up 10 minutes                              intelligent_hamilton
[root@tspdocker docker]#
```
→「Up」になっていることを確認

**②「ubuntu」を停止する**

```
[root@tspdocker docker]# docker stop 644f6b5a46b9
644f6b5a46b9
[root@tspdocker docker]#
```

**③「ubuntu」が停止されていることを確認**

```
[root@tspdocker docker]# docker ps -a | grep ubuntu
644f6b5a46b9        ubuntu              "/bin/bash"              24 minutes ago      Exited (0) 29 seconds ago                          intelligent_hamilton
[root@tspdocker docker]#
```
→「Exited」になっていることを確認

コンテナの停止(コンテナにログインしている場合)

```
exit
```

**【実行例】**
**①コンテナ「ubuntu」にログイン**

```
[root@tspdocker docker]# docker attach 644f6b5a46b9
root@644f6b5a46b9:/#
```

**②「exit」実行**

```
root@644f6b5a46b9:/# exit
exit
[root@tspdocker docker]#
```

**③「ubuntu」が停止していることを確認**

```
[root@tspdocker docker]# docker ps -a | grep ubuntu
644f6b5a46b9        ubuntu              "/bin/bash"              30 minutes ago      Exited (0) 2 minutes ago                          intelligent_hamilton
[root@tspdocker docker]#
```
→「Exited」になっていることを確認


## 動作中のコンテナへログイン

- attach

```
docker attach <CONTAINER IDまたはNAME>
```

**【実行例】**

**①「ubuntu」が起動していることを確認**

```
[root@tspdocker docker]# docker ps -a | grep ubuntu
644f6b5a46b9        ubuntu              "/bin/bash"              35 minutes ago      Up 11 seconds                              intelligent_hamilton
[root@tspdocker docker]#
```

**②「ubuntu」のコンテナにログインできることを確認**

```
[root@tspdocker docker]# docker attach 644f6b5a46b9
root@644f6b5a46b9:/#
```

**※抜ける際は、「Ctrl」を押しながら「p」→「q」の順番で押す。**

```
root@644f6b5a46b9:/# read escape sequence
[root@tspdocker docker]#
```

- exec

```
docker exec -it <CONTAINER IDまたはNAME> /bin/bash
```

|  オプション名  |  内容 |
| ---- | ---- |
|  i  |  標準入力(STDIN)を開いたままにする  |
|  t  |  擬似ttyに接続する。ディスプレイ(STDOUT)をつなぐイメージ  |

**【実行例】**

**①「ubuntu」が起動していることを確認**

```
[root@tspdocker docker]# docker ps -a | grep ubuntu
644f6b5a46b9        ubuntu              "/bin/bash"              35 minutes ago      Up 11 seconds                              intelligent_hamilton
[root@tspdocker docker]#
```

**②「ubuntu」のコンテナにログインできることを確認**

```
[root@tspdocker docker]# docker exec -it 644f6b5a46b9 /bin/bash
root@644f6b5a46b9:/#
```

**※抜ける際は、「Ctrl」を押しながら「p」→「q」の順番で押す。**

```
root@644f6b5a46b9:/# read escape sequence
[root@tspdocker docker]#
```

# 参考
[Dockerコンテナの作成、起動〜停止まで](https://qiita.com/kooohei/items/0e788a2ce8c30f9dba53)
[Docker コマンドチートシート](https://qiita.com/wMETAw/items/34ba5c980e2a38e548db)
[Dockerコンテナ内で操作 attachとexecの違い](https://qiita.com/RyoMa_0923/items/9b5d2c4a97205692a560)
[初心者用Docker基本コマンド一覧(新旧スタイル対応)](https://qiita.com/FukuharaYohei/items/ef5cf790b5269e73cdb3)