docker.svg

【Docker】イメージ コマンド一覧

Docker
2024/02/17

build

Dockerfileからイメージを作成します。

$ docker image build [オプション] {Dockerfileのパス}
オプション省略形デフォルト説明
--file-fDockerfileのファイル名(パス)を指定(デフォルトはDockerfile)
--tag-tイメージ名及びタグを指定(name:tag)指定しなかった場合<none>となる
--targetビルド対象のステージを指定
例1
$ docker image build -t myimage:latest . 
例2
$ docker image build -f Dockerfile_test -t test_image:0.1 .

history

イメージの履歴を表示します。

$ docker image hisotry [オプション] {イメージ}
オプション省略形デフォルト説明
--formattable表示内容をカスタマイズする(table,table TEMPLATE, json, TEMPLATE
フォーマット項目説明
.IDイメージID
.CreatedSinceイメージ作成からの経過時間またはイメージ作成時刻
.CreatedAtイメージ作成時のタイムスタンプ
.CreatedByイメージ作成時に使用したコマンド
.Sizeイメージのサイズ
.Commentイメージに対するコメント
$ docker image hisotry ubuntu
IMAGE          CREATED       CREATED BY                                       SIZE      COMMENT
e2e172ecd069   2 weeks ago   /bin/sh -c #(nop)  CMD ["/bin/bash"]             0B        
<missing>      2 weeks ago   /bin/sh -c #(nop) ADD file:5703a6689620ec495…    69.3MB    
<missing>      2 weeks ago   /bin/sh -c #(nop)  LABEL org.opencontainers.…    0B        
<missing>      2 weeks ago   /bin/sh -c #(nop)  LABEL org.opencontainers.…    0B        
<missing>      2 weeks ago   /bin/sh -c #(nop)  ARG LAUNCHPAD_BUILD_ARCH      0B        
<missing>      2 weeks ago   /bin/sh -c #(nop)  ARG RELEASE                   0B   

import

アーカイブファイル(.tar, .tar.gz, .tgz, .bzip, .tar.xz, txz)を読み込みます。

$ docker image import [オプション] {ファイルパスまたはURL} {読み込んだリポジトリ(:タグ)}
$ docker image import test.tar test:1.0
$ docker image ls
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
test         1.0       646827926ce2   4 seconds ago   71.9MB

inspect

イメージの情報を表示します。

$ docker image inspect [オプション] {イメージ}
オプション省略形デフォルト説明
--format-f表示内容をカスタマイズする(json, TEMPLATE
$ docker image inspect -f "{{json .Config.Env}}" nginx
["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","NGINX_VERSION=1.25.3","NJS_VERSION=0.8.2","PKG_RELEASE=1~bookworm"]

load

tarファイルからイメージを読み込みます。tarファイルはgzip、bzip2、xz、zstdで圧縮されていても読み込むことができます。

$ docker image load [オプション]
オプション省略形デフォルト説明
--input-i読み込むtarファイルを指定する
例1
$ docker image load < test.tar  #標準入力(STDIN)
例2
$ docker image load -i test.tar

ls

イメージの一覧を表示します。

$ docker image ls [オプション] {リポジトリ(:タグ)}
オプション省略形デフォルト説明
--all-aすべてのイメージを表示する(デフォルトでは中間イメージは非表示)
--digestsDIGESTSを表示項目に加える
--filter-f表示対象をフィルタリングする
--formattable表示内容をカスタマイズする(table,table TEMPLATE, json, TEMPLATE
--no-trunc値の省略を行わない
--quiet-qIDのみを表示する
フォーマット項目説明
.IDイメージID
.Repositoryリポジトリ
.Tagイメージのタグ
.Digestイメージのdigest値
.CreatedSinceイメージ作成からの経過時間
.CreatedAtイメージ作成時のタイムスタンプ
.Sizeイメージのサイズ
例1
$ docker image ls
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
ubuntu       latest    e2e172ecd069   2 weeks ago    69.3MB
nginx        latest    6c7be49d2a11   3 months ago   192MB
例2
$ docker image ls -q
e2e172ecd069
6c7be49d2a11

--filter

  • dangling
    タグあり(false)、タグなし(true)のどちらかを表示します。
    dangling=false
    $ docker image ls --filter "dangling=false"
    REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
    ubuntu       latest    e2e172ecd069   2 weeks ago    69.3MB
    dangling=true
    $ docker image ls --filter "dangling=true" 
    REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
    <none>       <none>    c1eb287ec8b9   44 minutes ago   71.9MB
  • label
    ラベルを指定して表示します。ラベルはdocker image inspectContainerConfig.Labelsに該当します。
    ラベルの取得
    $ docker image inspect --format "{{json .ContainerConfig.Labels}}" ubuntu
    {"org.opencontainers.image.ref.name":"ubuntu","org.opencontainers.image.version":"22.04"}
    label=<LABEL>
    $ docker image ls --filter "label=org.opencontainers.image.ref.name"
    REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
    ubuntu       latest    e2e172ecd069   2 weeks ago   69.3MB
    label=<LABEL>=<VALUE>
    $ docker image ls --filter "label=org.opencontainers.image.version=22.04"  
    REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
    ubuntu       latest    e2e172ecd069   2 weeks ago   69.3MB
  • before
    指定したイメージより前に作成されたイメージを表示します。
    フィルタなし
    $ docker image ls
    REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
    image3       latest    e3389e8b6d3d   30 seconds ago   69.3MB
    image2       latest    f5dd3bd35cc1   32 seconds ago   69.3MB
    image1       latest    089466648891   42 seconds ago   69.3MB
    before
    $ docker image ls --filter "before=image3"
    REPOSITORY   TAG       IMAGE ID       CREATED              SIZE
    image2       latest    f5dd3bd35cc1   About a minute ago   69.3MB
    image1       latest    089466648891   About a minute ago   69.3MB
  • since
    指定したイメージより後に作成されたイメージを表示します。
    since
    $ docker image ls --filter "since=image1" 
    REPOSITORY   TAG       IMAGE ID       CREATED              SIZE
    image3       latest    e3389e8b6d3d   About a minute ago   69.3MB
    image2       latest    f5dd3bd35cc1   About a minute ago   69.3MB
  • reference
    リポジトリ+タグがパターンに一致するイメージを表示します。
    フィルタなし
    $ docker image ls
    REPOSITORY   TAG       IMAGE ID       CREATED              SIZE
    image3       1.0       21868a451c64   59 seconds ago       69.3MB
    image2       1.0       bcde97e41e38   About a minute ago   69.3MB
    image1       1.0       3ec9dbc92993   About a minute ago   69.3MB
    image3       latest    e3389e8b6d3d   8 minutes ago        69.3MB
    image2       latest    f5dd3bd35cc1   8 minutes ago        69.3MB
    image1       latest    089466648891   8 minutes ago        69.3MB
    reference
    $ docker image ls --filter "reference=image1:*"
    REPOSITORY   TAG       IMAGE ID       CREATED              SIZE
    image1       1.0       3ec9dbc92993   About a minute ago   69.3MB
    image1       latest    089466648891   9 minutes ago        69.3MB
    reference
    $ docker image ls --filter "reference=*:latest" 
    REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
    image3       latest    e3389e8b6d3d   10 minutes ago   69.3MB
    image2       latest    f5dd3bd35cc1   10 minutes ago   69.3MB
    image1       latest    089466648891   10 minutes ago   69.3MB

prune

使用されていないイメージをすべて削除します。デフォルトでは、タグづけがされていない、かつどのコンテナからも参照されていないものが対象となります。

$ docker image prune [オプション]
オプション省略形デフォルト説明
--all-aコンテナから参照されていないすべてのイメージを対象とする(タグづけの有無は関係なくなる)
--filter削除対象をフィルタリングする
--force-fコマンド実行時の確認を省略する
$ docker image prune -a
WARNING! This will remove all images without at least one container associated to them.
Are you sure you want to continue? [y/N] 

filter

  • until
    指定したタイムスタンプより前に作成されたイメージのみ削除します。
    削除前
    $ docker image ls --format "table {{.Repository}}\t{{.Tag}}\t{{.ID}}\t{{.CreatedAt}}"
    REPOSITORY    TAG       IMAGE ID       CREATED AT
    ubuntu        latest    e2e172ecd069   2024-01-12 02:03:15 +0900 JST
    nginx         latest    6c7be49d2a11   2023-10-25 07:44:45 +0900 JST
    hello-world   latest    ee301c921b8a   2023-05-03 01:49:27 +0900 JST
    until
    $ docker image prune -a --filter "until=2024-01-01T00:00:00"
    削除後
    $ docker image ls --format "table {{.Repository}}\t{{.Tag}}\t{{.ID}}\t{{.CreatedAt}}"
    REPOSITORY    TAG       IMAGE ID       CREATED AT
    ubuntu        latest    e2e172ecd069   2024-01-12 02:03:15 +0900 JST
  • label
    docker image lsと同様のため割愛します。

pull

レジストリからイメージを取得します。

$ docker image pull [オプション] {リポジトリ(:タグ)}
オプション省略形デフォルト説明
--all-tags-a対象リポジトリのすべてのタグを取得する
$ docker image pull ubuntu:20.04

push

レジストリにイメージを登録します。

$ docker image push [オプション] {リポジトリ(:タグ)}
オプション省略形デフォルト説明
--all-tags-a対象リポジトリのすべてのタグを登録する
$ docker image push myimage:latest

rm

イメージを削除します。デフォルトではコンテナから参照されているイメージは削除できません。

$ docker image rm [オプション] {イメージ}
オプション省略形デフォルト説明
--force-f強制的にイメージを削除する(コンテナはそのまま残る)
$ docker image rm ubuntu

save

イメージをtarファイルとして保存します。

$ docker image save [オプション] {イメージ}
オプション省略形デフォルト説明
--output-o保存するファイル名を指定
例1
$ docker image save ubuntu > test.tar  #標準出力(STDOUT)
例2
$ docker image save -o test.tar ubuntu
例3
$ docker image save ubuntu | gzip > test.tar.gz

tag

対象のイメージに対するタグを作成します。

$ docker image tag {作成元イメージ} {作成するタグ(イメージ)}
例1
$ docker image tag ubuntu ubuntu:mytag
$ dpcker image ls
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       latest    e2e172ecd069   2 weeks ago   69.3MB
ubuntu       mytag     e2e172ecd069   2 weeks ago   69.3MB
$ docker image tag ubuntu test
$ docker image ls       
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
test         latest    e2e172ecd069   2 weeks ago   69.3MB
ubuntu       latest    e2e172ecd069   2 weeks ago   69.3MB

補足

--format

docker image inspectdocker image lsなどで表示する形式や項目を指定します。

TEMPLATE

表示する文字列の形式を指定します。

TEMPLATE
$ docker image ls --format '{{.ID}}:{{.Repository}}:{{.Tag}}'
e2e172ecd069:ubuntu:latest

table

テーブル形式で表示する項目を指定します。

table
$ docker image ls --format 'table {{.ID}}\t{{.Repository}}\t{{.Tag}}'
IMAGE ID       REPOSITORY   TAG
e2e172ecd069   ubuntu       latest

json

json形式で表示する項目を指定します。

json
$ docker image inspect -f "{{json .Config.Env}}" nginx
["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","NGINX_VERSION=1.25.3","NJS_VERSION=0.8.2","PKG_RELEASE=1~bookworm"]

join

リスト(配列)を連結して表示します。

join
$ docker image inspect --format '{{join .ContainerConfig.Cmd ","}}' ubuntu
/bin/sh,-c,#(nop) ,CMD ["/bin/bash"]

lower

すべて小文字で表示します。

lower
$ docker image ls --format '{{.Repository}}\t{{lower .Size}}'
ubuntu  69.3mb

title

最初の文字を大文字で表示します。

title
$ docker image ls --format '{{title .Repository}}\t{{.Size}}' 
Ubuntu  69.3MB

upper

すべて大文字で表示します。

upper
$ docker image ls --format '{{upper .Repository}}\t{{.Size}}'
UBUNTU  69.3MB

split

指定した文字で分割し、文字列リストとして表示します。

split
$ docker image inspect --format '{{split .Created "T"}}' ubuntu
[2024-01-11 17:03:15.951656381Z]

println

改行を挿入します。

split
$ docker image ls --format '{{println .ID}}{{.Repository}}\t{{.Tag}}'
e2e172ecd069
ubuntu  latest