■ はじめに
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 image コマンド を扱う。 また、以下の動画を見ながらやるといいかも。
https://dotinstall.com/lessons/basic_docker
目次
【0】予備知識 1)Docker における基本操作 2)コマンドの基本体系 3)遷移図 【1】docker image ls Tips:Docker image ID を取得する 【2】docker image build 【3】docker search 【4】docker image pull 【5】docker image inspect 【6】docker image rm Tips:再タグ付け 【7】docker exec 【8】docker tag / docker image tag
【0】予備知識
1)Docker における基本操作
* Docker における基本操作は、以下に大別できる。 ~~~~~~~~~~ [1] Dockerイメージに関する操作 [2] Dockerコンテナに関する操作 ~~~~~~~~~~ => 「[2] Dockerコンテナに関する操作」については、 以下の関連記事を参照のこと
Docker ~ 基本編 / docker container コマンド ~
https://dk521123.hatenablog.com/entry/2022/01/20/000000
2)コマンドの基本体系
docker <操作グループ> <操作種類>
docker | 何を | どうする | (引数) | 具体的な名称 |
---|---|---|---|---|
docker | container | run | -d --name apache-demo | httpd:latest |
コマンド例
コマンド | サブコマンド(カテゴリ) | 操作 | オプション |
---|---|---|---|
docker | help | ||
docker | container | run | --help/-d/-it |
docker | container | stop | |
docker | container | rm | |
docker | image | pull | |
docker | image | rm |
補足:旧コマンドについて
* 上記については、docker v2 だが、 docker v1 のコマンドも よく見るので知っておいた方がいい
https://qiita.com/zembutsu/items/6e1ad18f0d548ce6c266
v2 | v1 | Explanation |
---|---|---|
docker image ls | docker images | イメージ一覧表示 |
docker image rm | docker rmi | イメージを削除 |
docker image tag | docker tag | タグを付ける |
docker image pull | docker pull | Dockerイメージをレジストリから取得 |
3)遷移図
+------------+ | Docker Hub | +------------+ | ↑ pull | | push ↓ | +------------+ build +--------------+ rmi | Dockerfile | ------> | Docker Image | ------> Deleted +------------+ +--------------+ ↙ ↗ create | ↑ commit run ↙ ↗ commit ↓ | +-----------+ stop +-----------+ rm | Container | ------> | Container | ------> Deleted | (Running) | <------ | (Stopped) | +-----------+ run +-----------+
【1】docker image ls
* ローカル上で取得したDockerイメージ一覧表示 * 旧コマンドだと、「docker images」
https://docs.docker.jp/engine/reference/commandline/images.html
コマンド例
docker image ls docker image ls -a
Tips:Docker image ID を取得する
# docker images (<イメージ名>:<タグ>) --format "{{.ID}}" docker images --format "{{.ID}}" # c23c9837dbc
https://www.k-hitorigoto.online/entry/2022/10/11/080000
出力形式
https://docs.docker.jp/engine/reference/commandline/images.html#docker-images-format-the-output
プレースホルダ | 説明 |
---|---|
.ID | イメージ ID |
【2】docker image build
* Dockerイメージのビルド
https://matsuand.github.io/docs.docker.jp.onthefly/engine/reference/commandline/image_build/
基本構文
docker image build -t [image name]:[tag] [Dockerfile path]
オプション
# | オプション | 説明 |
---|---|---|
1 | -t, --tag | -t [イメージ名]:[タグ]で指定 |
2 | -f, --file | -f [Dockerfile Name]で指定 |
3 | --pull | --pull=trueでDockerイメージを再取得 |
4 | --no-cache | キャッシュを使わずに毎回すべてビルド |
5 | --network | RUN 命令に対してネットワークモードを設定 |
コマンド例
https://dk521123.hatenablog.com/entry/2022/01/14/102719
# より抜粋 # DockerファイルからDockerイメージを作成 # docker build [ -t {イメージ名} [ :{タグ名} ] ] {Dockerfileのあるディレクトリ} docker image build -t hello/world:latest . docker image build -t hello/world:latest -f Dockerfile2 .
【3】docker search
* Dockerイメージの検索
コマンド例
sudo docker search centos | more
【4】docker image pull
* Dockerイメージをレジストリから取得(ダウンロード) * 旧コマンド「docker pull」
https://docs.docker.jp/engine/reference/commandline/pull.html
https://matsuand.github.io/docs.docker.jp.onthefly/engine/reference/commandline/image_pull/
コマンド例
sudo docker pull centos
【5】docker image inspect
* Dockerイメージの詳細設定表示 * 旧コマンド「docker inspect」
コマンド例
sudo docker inspect e934aafc2206
【6】docker image rm
* Dockerイメージ削除 * 旧コマンド「docker rmi [イメージID] (rmi = REmove Image)」 => 補足: docker rm は、コンテナ削除。
https://docs.docker.jp/engine/reference/commandline/image_rm.html
https://docs.docker.jp/engine/reference/commandline/rmi.html
コマンド例
docker image rm hello-world
Tips:再タグ付け
$ docker image pull hello-world $ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest 83eea1180916 15 minutes ago 6.96MB # 再タグ付け $ docker image tag hello-world:latest hello-world:renamed # or "docker image tag 83eea1180916 hello-world:renamed" $ docker image rm hello-world:latest Untagged: hello-world:latest $ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE hello-world renamed 83eea1180916 15 minutes ago 6.96MB
https://tutorialcrawler.com/virtualization/docker/docker%E3%82%BF%E3%82%B0/
使用上の注意
* イメージを削除するには、コンテナが停止している必要がある
https://qiita.com/gisuyama7/items/82086b30f6b8e6fc14cf
=> そうしないと以下「エラー内容」が表示
エラー内容
Error response from daemon: conflict: unable to remove repository reference "hello-world" (must force) - container aa1a26a9a4aa is using its referenced image aa1a26a9a4bb
対応策
# コンテナが起動しているかを一覧表示 docker ps -a # docker container rm <CONTAINER ID> でコンテナ停止 docker container rm aa1a26a9a4aa # docker image rm <IMAGE NAME> でDockerイメージを削除 docker image rm hello-world
【7】docker exec
* Dockerコンテナ内に入る
コマンド例
docker exec -it <container_name> bash # exit で出る
【8】docker tag / docker image tag
* ソースイメージを参照するタグを生成
https://docs.docker.jp/engine/reference/commandline/tag.html
https://matsuand.github.io/docs.docker.jp.onthefly/engine/reference/commandline/image_tag/
docker tag [ImageID] ([Repository]/)[ImageName]:[Tag]
https://docs.docker.jp/linux/step_six.html
参考文献
https://qiita.com/zembutsu/items/6e1ad18f0d548ce6c266
関連記事
Docker ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2020/04/24/160044
Docker ~ Windows / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2017/09/23/235818
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/2024/02/03/020736
Docker ~ ファイルをコンテナにコピー ~
https://dk521123.hatenablog.com/entry/2022/04/27/000000
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