【Docker】 Docker ~ 基本編 / dockerコマンド ~

■ はじめに

https://dk521123.hatenablog.com/entry/2020/04/24/160044
https://dk521123.hatenablog.com/entry/2018/04/10/234030
https://dk521123.hatenablog.com/entry/2020/04/11/000000

の続き。

今回は、dockerコマンド を扱う。
また、以下の動画を見ながらやるといいかも。

https://dotinstall.com/lessons/basic_docker

目次

【1】 Dockerコンテナに関するコマンド
 1-1)コンテナ停止:docker stop
 1-2)コンテナ削除:docker rm
 1-3)動いているコンテナの確認:docker ps
 1-4)停止しているコンテナの確認:docker ps -a

【2】 Dockerイメージに関するコマンド
 2-1)Dockerイメージの検索:docker search
 2-2)Dockerイメージのダウンロード:docker pull
 2-3)取得したDockerイメージ一覧表示:docker images
 2-4)Dockerイメージの詳細設定表示:docker inspect
 2-5)Dockerイメージ削除:docker rmi


【3】 コンテナに関するコマンド
 3-1)コンテナ起動:docker run
 3-2)コンテナ一覧表示:docker ps -a
 3-3)コンテナ削除:docker rm
 3-4)ログ表示:docker logs
 3-5)バックグラウンド => フォアグラウンドで実行:docker attach --sig-proxy=false
 3-6)実行を停止:docker stop / docker kill
 3-7)実行を再開:docker start
 3-8)イメージ作成:docker commit
 3-9)コンテナ内に入る:docker exec -it
 3-10)コンテナの設定を更新:docker update

【4】 レポジトリに関するコマンド
 4-1)ログイン:docker login
 4-2)新しいイメージを作成する:docker build -t
 4-3)タグづけする:docker tag
 4-5)コンテナイメージをリポジトリにプッシュする:docker push
 4-6)コンテナイメージをリポジトリからプルする:docker pull
 4-7)Dockerイメージのexport:docker save
 4-8)Dockerイメージのimport:docker load

 【1】 Dockerコンテナに関するコマンド

1-1)コンテナ停止:docker stop
1-2)コンテナ削除:docker rm
1-3)動いているコンテナの確認:docker ps
1-4)停止しているコンテナの確認:docker ps -a

1-1)コンテナ停止:docker stop

docker stop centos

1-2)コンテナ削除:docker rm

docker rm centos

1-3)動いているコンテナの確認:docker ps

docker ps

1-4)停止しているコンテナの確認:docker ps -a

docker ps -a

 【2】 Dockerイメージに関するコマンド

2-1)Dockerイメージの検索:docker search
2-2)Dockerイメージのダウンロード:docker pull
2-3)取得したDockerイメージ一覧表示:docker images
2-4)Dockerイメージの詳細設定表示:docker inspect
2-5)Dockerイメージ削除:docker rmi

2-1)Dockerイメージの検索:docker search

sudo docker search centos | more

2-2)Dockerイメージのダウンロード:docker pull

sudo docker pull centos

2-3)取得したDockerイメージ一覧表示:docker images

sudo docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/centos    latest              e934aafc2206        3 days ago          199 MB

2-4)Dockerイメージの詳細設定表示:docker inspect

sudo docker inspect e934aafc2206

2-5)Dockerイメージ削除:docker rmi

# docker rmi [イメージID] (rmi = REmove Image)
docker rmi e934aafc2206

docker rmi centos

 【3】コンテナに関するコマンド

3-1) コンテナ起動:docker run
3-2) コンテナ一覧表示:docker ps -a
3-3) コンテナ削除:docker rm
3-4)ログ表示:docker logs
3-5)バックグラウンド => フォアグラウンドで実行:docker attach --sig-proxy=false
3-6)実行を停止:docker stop / docker kill
3-7)実行を再開:docker start
3-8)イメージ作成:docker commit
3-9)コンテナ内に入る:docker exec -it
3-10)コンテナの設定を更新:docker update

3-1) コンテナ起動:docker run

# コンテナを起動状態で作成
docker run --name=[名前] イメージ名 コマンド

コマンド例

#  ( コンテナ上で「echo "Hello World"」を実行)
sudo docker run centos echo "Hello World"

3-2) コンテナ一覧表示:docker ps -a

# 実行完了後を表示。「Exited (0)」は正常終了)
sudo docker ps -a

CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS                     PORTS               NAMES
3c38d46e852d        centos              "echo 'Hello World'"   5 minutes ago       Exited (0) 5 minutes ago                       gallant_yonath

実行完了後の最新3履歴を表示

sudo docker ps -a -n=3

3-3) コンテナ削除:docker rm

# 「sudo docker ps -a」で確認するとなくなっているはず
sudo docker rm 3c38d46e852d

3-4)ログ表示:docker logs

sudo docker logs 27f0c47e97eb

3-5)バックグラウンド => フォアグラウンドで実行:docker attach --sig-proxy=false

sudo docker attach --sig-proxy=false 27f0c47e97eb

3-6)実行を停止:docker stop / docker kill

# sudo docker kill 27f0c47e97eb でも可能
sudo docker stop 27f0c47e97eb

# 確認
sudo docker ps

3-7)実行を再開:docker start

sudo docker start 27f0c47e97eb

3-8)イメージ作成:docker commit

sudo docker commit fb31cf61cb2c admin/helloworld

sudo docker images

REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
admin/helloworld    latest              2f25f5844caa        About a minute ago   199 MB

sudo docker run -i -t admin/helloworld

3-9)コンテナ内に入る:docker exec -it

構文

docker exec -it <コンテナ名> bash

# -i (--interactive)は、標準入力を開き続ける
# -t (--tty) は、コンテナ内で疑似的な仮想端末を割り当ててる

https://www.memotansu.jp/docker/591/

3-10)コンテナの設定を更新:docker update

ホストOS起動時に自動で実行するように設定

* 「docker update --restart=always <コンテナ名>」で
 ホストOS起動時に自動で実行する
* 無効にするには「--restart=no」
* 以下の関連記事で使用した。

https://dk521123.hatenablog.com/entry/2019/12/14/010524

【4】 レポジトリに関するコマンド

レポジトリへのイメージ登録するためのコマンドを纏める

https://dk521123.hatenablog.com/entry/2020/05/22/165711

でECRへの登録に使ったコマンド。 Docker Hub でも使える。

4-1)ログイン:docker login
4-2)新しいイメージを作成する:docker build -t
4-3)タグづけする:docker tag
4-5)コンテナイメージをリポジトリにプッシュする:docker push
4-6)コンテナイメージをリポジトリからプルする:docker pull
4-7)Dockerイメージのexport:docker save
4-8)Dockerイメージのimport:docker load

4-1)ログイン:docker login

docker login [オプション] [サーバ]

コマンド例

# --username:ユーザ名、--password:パスワード
docker login --username admin --password password xxxx.xxx.ecr.us-west-2.amazonaws.com

セキュアに行うには...

# --password-stdin(標準出力からパスワードを設定) を使用する
cat ~/.password.txt | docker login --username admin --password-stdin xxxx.xxx.ecr.us-west-2.amazonaws.com

4-2)新しいイメージを作成する:docker build -t

docker build -t [リポジトリ名]

コマンド例

docker build -t hello-world-ecr

4-3)タグづけする:docker tag

docker tag [イメージID] [リポジトリ名]:[タグ]

コマンド例

docker tag hello-world-ecr:latest xxxx.xxx.ecr.us-west-2.amazonaws.com/hello-world-ecr:latest

4-5)コンテナイメージをリポジトリにプッシュする:docker push

docker push [コンテナ名]

コマンド例

docker push xxxx.xxx.ecr.us-west-2.amazonaws.com/hello-world-ecr:latest

4-6)コンテナイメージをリポジトリからプルする:docker pull

docker pull registry/repository[:tag]

コマンド例

# docker pull registry/repository[:tag]
docker pull xxxx.xxx.ecr.us-west-2.amazonaws.com/hello-world-ecr:latest

4-7)Dockerイメージのexport:docker save

# Dockerイメージをtarファイルとして出力する
docker save [コンテナ名] -o [Tarファイル名].tar

コマンド例

docker save hello-world-ecr:latest -o hello-world-ecr.tar

4-8)Dockerイメージのimport:docker load

# tarファイルをDockerイメージとしてロードする
docker load -i [Tarファイル名].tar

コマンド例

docker load -i hello-world-ecr.tar

# 確認
docker images

参考文献
https://qiita.com/leomaro7/items/e5474e67a8e41536f0ff

関連記事

Docker ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2020/04/24/160044
Docker ~ Windows / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2017/09/23/235818
Docker ~ 基本編 / Dockerfile ~
https://dk521123.hatenablog.com/entry/2020/04/14/000000
Docker ~ 基本編 / docker-compose ~
https://dk521123.hatenablog.com/entry/2020/04/11/000000
LocalStack ~ ローカルで疑似AWSを作成する ~
https://dk521123.hatenablog.com/entry/2019/12/14/010524
Amazon ECR ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/05/22/165711