Dockerのコマンドまとめ

# はじめに
Dockerは多くのIT開発企業で導入されている環境構築を楽にする技術です。
Dockerのコマンドをまとめます。

# 今回のDockerコマンド
* docker login
* docker pull
* docker images
* docker run
* docker run --name
* docker run --rm
* docker ps -a
* docker restart
* docker exec -it (コンテナID)or(コンテナ名) bash
* docker commit (コンテナID)or(コンテナ名) (新しいimage名)
* docker tag (source) (target)
* docker push
* docker rmi
* docker stop
* docker rm
* docker system prune

# 詳細

### docker login
Dockerにログインするコマンド。
Dockerを使用する場合は最初に行う。

```tarminal:ターミナル
% docker login
Username: => Dockerに登録したユーザー名を入力
Password: => Dockerに登録したパスワードを入力

=> ユーザー名、パスワードが合っていれば、ログインする。(Login Succeededと表示される)
```

### docker pull
Docker imageをdockerhubからホストにダウンロードするコマンド。

```tarminal:ターミナル
例)hello-worldというimageをダウンロードする時

% docker pull hello-world
=> hello-worldがダウンロードされる

=> ユーザー名、パスワードが合っていれば、ログインする。(Login Succeededと表示される)
```

### docker images
ホストの中にあるdocker imageのリストを表示するコマンド。

```tarminal:ターミナル
例)hello-worldというimageをダウンロードした後

% docker images
=> REPOSITORY      TAG      IMAGE ID      CREATED      SIZE
   hello-world     latest   (自動作成のID)  (作成した時)   (データサイズ)
```

### docker run
コンテナを作るコマンド。

```tarminal:ターミナル
例)hello-worldというimageをダウンロードした後

% docker run hello-world
=> hello-worldのコンテナが作成され、実行される。

% docker run -it ubuntu bash
=> ubuntu(OSの名前、dockerhubに存在するdocker image)のコンテナが作成され、bashというプログラムを実行させる。
(bashはshellの名前。ubuntuのデフォルトのコマンドをbashに上書きして実行している。ちなみにubuntuのデフォルトのコマンドはbashなので、今回はdocker -it run ubuntuでも同じ。)
```

### docker run　--name
名前をつけてコンテナを作るコマンド。

```tarminal:ターミナル

% docker run --name sample ubuntu
=> sampleという名前のコンテナがubuntuというdocker imageから作成される。
```

### docker run　--rm
コンテナを起動した後、すぐにコンテナを削除コマンド。

```tarminal:ターミナル

% docker run --rm hello-world
=> hello-worldというdocker imageからコンテナを作成し、実行した後、すぐにコンテナが削除される。
(一度しか使わないコンテナは残さないために、すぐに削除する。)
```


### docker ps -a
全てのコンテナを表示するコマンド。

```tarminal:ターミナル
% docker ps -a
=> 全てのコンテナが表示される。

% docker ps
=> 実行中のコンテナのみされる。
```

### docker restart
一度実行したコンテナをリスタートするコマンド。

```tarminal:ターミナル

% docker restart (コンテナID)or(コンテナ名)
=> コンテナIDで指定したコンテナがリスタートされる。(STATUSがUPとなる)
```

### docker exec -it (コンテナID)or(コンテナ名) bash
リスタートしたコンテナにプログラムを実行させるコマンド。(bashの部分は適宜、実行したいプログラムに置き換える)

```tarminal:ターミナル

% docker exec -it (コンテナID)or(コンテナ名) bash
=> リスタートしたコンテナの中に入ることができる。(bashにより)
```

### docker commit (コンテナID)or(コンテナ名) (新しいimage名)
更新したコンテナを新しいDocker imageとして保存するコマンド。

```tarminal:ターミナル

% docker commit (コンテナID)or(コンテナ名)　(新しいimage名)
=> docker imageが保存され、IDが表示される。
```

### docker tag (source) (target)
docker imageのimage名を変更するコマンド。
docker imageをdockerhubにpushする前に、ホストのimageのリポジトリ名とpush先の自身のdockerhubのリポジトリ名を同じにするために使う。(dockerhubのリポジトリはdockerhubで作成しておく必要がある)

```tarminal:ターミナル

% docker tag (ホストのdocker imageのリポジトリ名:タグ名) (dockerのユーザー名/リポジトリ名)
=> docker imageのリポジトリ名がdockerhubのリポジトリ名と同じになる。(タグ名は指定しなければ、latestとなる。)
```

### docker push
docker imageを自分のリポジトリに作成するコマンド。

```tarminal:ターミナル

% docker push (image名)
=> dockerhubにdocker imageがpushされる。(image名はdockerのユーザー名/リポジトリ名と同じにしておく)
```

### docker rmi
docker imageを削除するコマンド。(image名はdockerのユーザー名/リポジトリ名と同じにしておく)

```tarminal:ターミナル

% docker rmi (image名)or(image id)
=> 指定したdocker imageが削除される
```

### docker stop
実行中のコンテナをストップするコマンド。(STATUSをUP→EXITEDにする)

```tarminal:ターミナル

% docker stop (コンテナ名)or(コンテナID)
=> 指定したコンテナがストップされる。
```

### docker rm
コンテナを削除するコマンド。

```tarminal:ターミナル

% docker rm (コンテナ名)or(コンテナID)
=> 指定したコンテナが削除される
```

### docker system prune
ストップしているコンテナ全てを一括で削除するコマンド。

```tarminal:ターミナル

% docker system prune
=> ストップしているコンテナが全て削除される
```


# 参考
Udemy
>かめれおん講師　「米国AI開発者がゼロから教えるDocker講座」
>>https://www.udemy.com/share/103aTRAEAdd1pTTHoC/

有料ですが、初学者の私にも非常に理解しやすかったです。

# 最後に
本投稿が初学者の復習の一助となればと幸いです。