【Docker】脆弱性エラー対応時に役立ったDockerコマンド

■ はじめに

完全に個人的なメモ。

https://dk521123.hatenablog.com/entry/2024/01/22/210831

で、発生した脆弱性エラーを調査している。

 調査の一環として、
AWS EMR リポジトリの Docker イメージをローカル上に Pull し
Inspector2の「Affected Package (影響しているパッケージ)」や
「Remediation (修復)」を元に脆弱性エラーについて、
PullしたDockerイメージに対して対応している。
その際のDockerコマンドを纏めておく。

目次

【0】遷移図
【1】docker pull / docker image pull
【2】docker run / docker container run
【3】docker exec / docker container exec
 1)root権限を使用するには
【4】docker cp / docker container cp
【5】docker container commit
【6】docker push / docker image push

【0】遷移図

                       +--------------------+
                       | AWS ECR Repository |
                       +--------------------+
                             | ↑
                        pull | | push
                             ↓ |
+------------+  build  +--------------+ rmi
| Dockerfile | ------> | Docker Image | ------> Deleted
+------------+         +--------------+
                  ↙ ↗  create | ↑ commit
          run ↙ ↗ commit      ↓ |
+-----------+  stop   +-----------+ rm
| Container | ------> | Container | ------> Deleted
| (Running) | <------ | (Stopped) |
+-----------+   run   +-----------+

【1】docker pull / docker image pull

* Dockerイメージをレジストリから取得
 => 以下の関連記事を参照

https://dk521123.hatenablog.com/entry/2020/04/13/000000

docker pull [DockerImage]
docker image pull [DockerImage]

# Dockerイメージ確認
docker images
docker image ls

【2】docker run / docker container run

* コンテナ起動

https://dk521123.hatenablog.com/entry/2022/01/20/000000

# コンテナを起動
docker container run --name=[ContainerName] [DockerImage]

# コンテナ確認
docker ps
docker container ps

【3】docker exec / docker container exec

* 実行中のコンテナ内でコマンドを実行

https://docs.docker.jp/engine/reference/commandline/exec.html
https://docs.docker.jp/engine/reference/commandline/container_exec.html
例1:コンテナ内に入る

docker exec -it [ContainerID/ContainerName] /bin/bash

例2:コンテナ内のファイルを削除

docker exec [ContainerID/ContainerName] rm -rf <YourFile>

1)root権限を使用するには

* 「-u root」または「--user root」を指定する

https://zenn.dev/aidemy/articles/3b34214b9aabf4
https://qiita.com/kazokmr/items/1ffc77d01a67aff90c75

例1:rootユーザとしてコンテナに入る

docker exec -u root -it [ContainerID/ContainerName] /bin/bash

例2:apt コマンドを実行する

docker exec -it --user root [CONTAINER] apt update -y

【4】docker cp / docker container cp

* コンテナとローカルファイルシステム間でファイルやフォルダを コピー 

https://docs.docker.jp/engine/reference/commandline/cp.html
https://docs.docker.jp/engine/reference/commandline/container_cp.html

* 詳細は以下の関連記事を参照

https://dk521123.hatenablog.com/entry/2022/04/27/000000

コンテナ内のファイルをホストに落とす

docker cp <ContainerID>:/etc/config.cnf config.cnf

ホストのファイルをコンテナにコピー

docker cp config.cnf <ContainerID>:/etc/config.cnf

【5】docker container commit

* コンテナからDockerイメージを作り直す

https://docs.docker.jp/engine/reference/commandline/commit.html

docker commit {対象のコンテナID(コンテナ名)} {作成したいイメージ名}
docker container commit {対象のコンテナID(コンテナ名)} {作成したいイメージ名}

【6】docker push / docker image push

* イメージをリポジトリにPush

https://docs.docker.jp/engine/reference/commandline/push.html

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

関連記事

Docker ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2020/04/24/160044
Docker ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/02/25/000000
Docker ~ 基本編 / docker imageコマンド ~
https://dk521123.hatenablog.com/entry/2020/04/13/000000
Docker ~ 基本編 / docker container コマンド ~
https://dk521123.hatenablog.com/entry/2022/01/20/000000
Docker ~ 基本編 / レポジトリに関するコマンド ~
https://dk521123.hatenablog.com/entry/2023/01/21/000000
Docker ~ ファイルをコンテナにコピー ~
https://dk521123.hatenablog.com/entry/2022/04/27/000000
Amazon ECR ~ 脆弱性診断 / Amazon Inspector ~
https://dk521123.hatenablog.com/entry/2024/01/22/210831
Amazon ECR ~ Dockerイメージを Pull & Push ~
https://dk521123.hatenablog.com/entry/2023/12/02/024631