Skip to content

DNET_DockerCommand

nishi_74322014 edited this page Sep 11, 2026 · 1 revision

Dockerコマンド

概要

Dockerコマンドのチュートリアル的な説明。

詳細

以下、Docker for Windowsでの実行結果。

チュートリアル

version

>docker version
Client: Docker Engine - Community
Version:           19.03.5
API version:       1.40
...

hello world

  • 対話実行

    • hello world

      >docker container run ubuntu:latest /bin/echo 'hello world.'
      
    • OS情報を表示してみる。

      >docker container run ubuntu:latest uname -a
      
  • BASH実行

    • 実行

      >docker container run -it --name bash ubuntu /bin/bash
      root@041a67b9c5dc:/# dir
      bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
      boot  etc  lib   media  opt  root  sbin  sys  usr
      root@041a67b9c5dc:/# exit
      exit
      
    • 再接続のテスト(別のターミナルから)

      >docker container run -it --name bash ubuntu /bin/bash
      ...exitしないで...
      >docker container attach bash
      root@041a67b9c5dc:/# exit
      exit
      

※ 「docker container run」の詳細はコチラ

search

  • 検索

    >docker search ubuntu
    NAME  DESCRIPTION  STARS  OFFICIAL  AUTOMATED
    ...   ...          ...    ...       ...
    
    • 構文

      docker search [Option] 検索キーワード
      
    • オプション

      • --filter=[ ] : フィルターを使用
      • --limit=n : 結果出力の最大数を指定
      • --no-trunc : 出力内容を省略しない

system info

基本

>docker system info

ディスク

  • 概要

    >docker system df
    TYPE                TOTAL     ACTIVE    SIZE     RECLAIMABLE
    Images              26        10        4.966GB  4.168GB (83%)
    Containers          22        0         3.969kB  3.969kB (100%)
    Local Volumes       14        0         541.2MB  541.2MB (100%)
    Build Cache         0         0         0B       0B
    
  • 詳細

    >docker system df -v
    Images space usage:
    REPOSITORY  TAG  IMAGE ID  CREATED  SIZE  SHARED SIZE  UNIQUE SIZE CONTAINERS
    ...         ...  ...       ...      ...   ...          ...         ...
    Containers space usage:
    CONTAINER ID  IMAGE  COMMAND  LOCAL VOLUMES  SIZE  CREATED  STATUS  NAMES
    ...           ...    ...      ...            ...   ...      ...     ...
    Local Volumes space usage:
    VOLUME NAME  LINKS  SIZE
    ...          ...    ...
    Build cache usage: 0B
    CACHE ID  CACHE TYPE  SIZE  CREATED  LAST USED  USAGE  SHARED
    ...       ...         ...   ...      ...        ...    ...
    
  • 削減

    >docker system prune
    
    • 構文

      docker system prune [Option]
      
    • オプション

      • --force(-f) : 強制削除(確認を省略)
      • --all(-a) : 未使用のイメージをすべて対象にする

イメージとコンテナの操作

新しいサブコマンド体系。

  • docker psdocker container ls(コンテナの一覧)
  • docker imagesdocker image ls(イメージの一覧)
  • docker historydocker image history(イメージの履歴)

イメージ

images系のコマンドは、docker image サブコマンドになったらしい。

  • イメージ名

    • ImageName
    • <Docker Hub User Name>/ImageName
    • <Docker Hub Organization Name>/ImageName
  • 一覧
    IMAGE IDが同じであれば、実体は同じ。

    >docker image ls
    REPOSITORY  TAG  IMAGE ID  CREATED  SIZE
    ...         ...  ...       ...      ...
    
    • 構文

      docker image ls [Option] [RepositoryName]
      
    • オプション

      • --all(-a) : すべてのイメージ(中間イメージを含む)
      • --digests : digestの表示有無
      • --no-trunc : 出力内容を省略しない
      • --quiet(-q) : ImageIDのみ表示
  • プル
    コチラ

    • 構文

      • 通常

        docker image pull [Option] ImageName[:TagName]
        
      • レジストリ指定

        docker image pull [Option] [RegHost[:RegPort]/]ImageName[:TagName]
        
      • レジストリ・パス指定

        docker image pull [Option] [RegHost[:RegPort]/]XXXX/YYYY
        
      • ダイジェスト値を使う

        docker image pull [Option] ImageName[@HashAlg:HashVal]
        
    • オプション

      • --all-tags(-a) : すべてのタグのイメージ
      • --disable-content-trust=false : イメージを認証
    • イメージ認証の有効化
      上記の「--disable-content-trust=false」を設定しなくても認証するようになる。

      • Windows

        >set DOCKER_CONTENT_TRUST=1
        
      • Linux

        $ export DOCKER_CONTENT_TRUST=1
        
  • 調査

      • 基本

        >docker image inspect ubuntu
        [... JSON ...]
        
      • OS

        >docker image inspect -f="{{ .Os}}" ubuntu
        [... JSON ...]
        
    • 構文

      docker image inspect [Option] ImageName [ImageName...]
      
    • オプション

      • --format(-f)="" : フォーマット指定
  • タグ
    リネームではなく、別名の追加になる。

    >docker image tag hello-world daisukenishino77/hello-world2:hogehoge
    
    • 構文

      docker image tag ImageName1 ImageName2[:TagName]
      
    • オプション
      なし。

  • 削除

    >docker image rm daisukenishino77/hello-world2:hogehoge
    
    • 構文

      docker image rm [Option] ImageName [ImageName...]
      
    • オプション

      • --force(-f) : 強制削除
      • --no-prune : 中間イメージを削除しない
  • 削減

    >docker image prune
    
    • 構文

      docker image prune [Option]
      
    • オプション

      • --force(-f) : 強制削除(確認を省略)
      • --all(-a) : 未使用のイメージをすべて対象にする
  • SaveとLoad

    • Save

      >docker image save -o save.tar nginx:latest
      
      • 構文

        docker image save [Option] [ImageName]
        
      • オプション
        保存ファイル名を指定する場合は「-o」を指定する。

    • Load

      >docker image load -i save.tar
      
      • 構文

        docker image load [Option]
        
      • オプション
        読込ファイル名を指定する場合は「-i」を指定する。

コンテナ

container系のコマンドは、docker container サブコマンドになったらしい。

  • 一覧

    >docker container ls(ps)
    CONTAINER ID  IMAGE  COMMAND  CREATED  STATUS  PORTS  NAMES
    ...           ...    ...      ...      ...     ...    ...
    

    ※ コンテナはimageファイルでもcontainerプロセスでもあるので ls, ps をサポート。

    • 構文

      docker container ls [Options]
      
    • オプション

      • --all(-a) : すべてのコンテナ(停止中を含む)
      • --filter(-f) : Filter output based on conditions provided
      • --format : Pretty-print containers using a Go template
      • --last(-n) : Show n(-1) last created containers (includes all states)
      • --latest(-l) : Show the latest created container (includes all states)
      • --no-trunc : Don't truncate output
      • --quiet(-q) : Only display numeric IDs
      • --size(-s) : Display total file sizes
  • 調査

    • 構文

      docker container inspect [Option] ContainerName [ContainerName...]
      
    • オプション

      • --format(-f)="" : フォーマット指定
      • --size(-s) : 合計ファイルサイズを表示
  • リネーム

    docker container rename OldName NewName
    
  • その他の操作と差分確認

    • ファイルのコピー
      Docker for Windowsでは、ホストはWindowsになる。

      >docker cp c:\camera.log bash:/etc/cameralog
      
      • コンテナからホスト

        docker cp ContainerID:/FilePath /FilePath
        
      • ホストからコンテナ

        docker cp /FilePath ContainerID:/FilePath
        
    • Diffの取得
      ファイルのコピーの実行結果のDiffを取る。

      • 確認(差分)

        >docker container diff bash
        C /etc
        A /etc/cameralog
        C /root
        A /root/.bash_history
        
      • 確認(コンテナ内)

        >docker container start -i bash
        root@ff0359cb31e4:/# dir
        bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
        boot  etc  lib   media  opt  root  sbin  sys  usr
        root@ff0359cb31e4:/# cd etc
        root@ff0359cb31e4:/etc# dir
        ... cameralog
        

WWWサーバの構築と実行

ダウンロード

>docker image pull nginx

※ 詳しくは、コチラを参照。

構築

実行(コンテナ)

>docker container run --name www_server -d -p 8080:80 nginx
  • 構文

    docker container run [Option] ImageName[:Tag|Digest] [OS Command] [Parameter]
    
  • オプション
    Docker run リファレンス — Docker-docs-ja ドキュメント
    http://docs.docker.jp/engine/reference/run.html

    • バックグラウンド実行

      • 実行後、削除したり(--rm)、
      • 結果によって再開(--restart=[])したりできる。
    • ネットワーク設定

      • ネットワーク接続
      • ポートマッピング(NAPT)
      • DNS, HOSTS設定
      • ホスト名、IP, MAC設定
    • リソース指定

      • CPU
      • Memory
      • Volume
    • 環境設定

      • 環境変数
      • 読み取り専用
      • 作業ディレクトリ
      • ユーザ名

アクセス

http://localhost:8080/

識別子

>docker container ls
CONTAINER ID  IMAGE  COMMAND  CREATED  STATUS  PORTS  NAMES
beb3d097cd67  ...    ...      ...      ...     ...    www_server

※ コンテナ識別子としては、「CONTAINER ID」、「NAMES」が使用できる。

確認

  • ポート転送の確認

    >docker container port www_server
    >docker container port beb3d097cd67
    80/tcp -> 0.0.0.0:8080
    
  • ステータス確認

    >docker container stats www_server
    >docker container stats beb3d097cd67
    CONTAINER ID  NAME       CPU %  MEM USAGE / LIMIT  MEM %  NET I/O  BLOCK I/O  PIDS
    beb3d097cd67  www_server ...    ...                ...    ...
    
  • プロセス確認

    >docker container top www_server
    >docker container top beb3d097cd67
    PID  USER  TIME  COMMAND
    ...  ...   ...   ...
    
  • ログ確認

    >docker container logs -t www_server
    >docker container logs -t beb3d097cd67
    2019-12-10T03:13:38.250183500Z 172.17.0.1 - - [10/Dec/2019:03:13:38 +0000] "GET /favicon.ico HTTP/1.1" 404 555 "http://localhost:8080/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36" "-"
    2019-12-10T03:13:38.250318000Z 2019/12/10 03:13:38 [error] 6#6: *2 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 172.17.0.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "localhost:8080", referrer: "http://localhost:8080/"
    

調査(コンテナ)

コンテナの「調査」を参照。

>docker container inspect www_server
>docker container inspect beb3d097cd67

停止(コンテナ)

コンテナの停止。

>docker container stop www_server
>docker container stop beb3d097cd67
  • 構文

    • ContainerName

      docker container stop [Option] ContainerName [ContainerName]
      
    • ContainerID

      docker container stop [Option] ContainerID [ContainerID]
      
  • オプション

    • --time(-t) n : 停止までの猶予時間(秒)

再開

停止しているコンテナの再開。

>docker container start www_server
>docker container start beb3d097cd67
  • 構文

    • ContainerName

      docker container start [Option] ContainerName [ContainerName]
      
    • ContainerID

      docker container start [Option] ContainerID [ContainerID]
      
  • オプション

    • --attach(-a) : STDOUT、STDERR にアタッチ
    • --interactive(-i) : STDIN にアタッチ

再起動

コンテナの再起動。

>docker container restart www_server
>docker container restart beb3d097cd67
  • 構文

    • ContainerName

      docker container restart [Option] ContainerName [ContainerName]
      
    • ContainerID

      docker container restart [Option] ContainerID [ContainerID]
      
  • オプション

    • --time(-t) n : 停止までの猶予時間(秒)

中断・再開

コンテナの中断・再開。

  • 中断

    >docker container pause www_server
    >docker container pause beb3d097cd67
    
    • 構文

      • ContainerName

        docker container pause ContainerName
        
      • ContainerID

        docker container pause ContainerID
        
    • オプション
      なし。

  • 再開

    >docker container unpause www_server
    >docker container unpause beb3d097cd67
    
    • 構文

      • ContainerName

        docker container unpause ContainerName
        
      • ContainerID

        docker container unpause ContainerID
        
    • オプション
      なし。

削除(コンテナ)

コンテナの削除。

>docker container rm www_server
  • 構文

    • ContainerName

      docker container rm [Option] ContainerName [ContainerName]
      
    • ContainerID

      docker container rm [Option] ContainerID [ContainerID]
      
  • オプション

    • --force(-f) : 強制削除(実行中のコンテナも削除)
    • --volume(-v) : コンテナに関連付けられた匿名ボリュームも削除

ネットワーク

一覧(ネットワーク)

>docker network ls
  • 構文

    docker network ls [Option]
    
  • オプション

    • --filter=[ ] : フィルターを使用
    • --no-trunc : 出力内容を省略しない
    • --quiet(-q) : ネットワークIDのみ表示

作成(ネットワーク)

>docker network create --driver=bridge www_network

調査(ネットワーク)

接続

  • 接続

    >docker network connect www_network www_server
    
    • 構文

      • ContainerName

        docker network connect [Option] NetworkName ContainerName
        
      • ContainerID

        docker network connect [Option] NetworkName ContainerID
        
    • オプション

      • --ip : ipv4 address
      • --ip6 : ipv6 address
      • --alias : Alias Name
      • --link : 他のContainerへのリンク
  • 起動時に接続

    >docker container run --name www_server --net=www_network -d -p 8080:80 nginx
    
    • 構文

      docker container run [Option] ImageName[:Tag|Digest] [OS Command] [Parameter]
      
    • オプション(--net=""

      • none : コンテナにネットワーク機能を付けない
      • host : コンテナ内でホスト側ネットワーク・スタックを使用
      • bridge : ブリッジ上でコンテナ用に新しいネットワーク・スタックを作成
      • container:<name|id> : 他のコンテナ用ネットワーク・スタックを再利用
      • docker network create」コマンドで作成したNetworkName

切断

>docker network disconnect www_network www_server

削除(ネットワーク)

>docker network rm www_network

イメージの作成と登録

作成(イメージ)

Dockerファイルを docker build して作成
(カレントディレクトリの場合も「.」を指定)

>docker build -t sample:1.0 .
  • 構文

    docker build [Option] [Dockerfileの場所]
    
  • オプション

    • イメージ名およびタグ名は「-t」で指定する。
    • ファイル名は「-f」で指定する。

登録

  • ログイン

    >docker login
    Login with your Docker ID to push and pull images from Docker Hub.
    If you don't have a Docker ID, head over to https://hub.docker.com to create one.
    Username: daisukenishino77
    Password:
    Login Succeeded
    
    • 構文

      docker login [Option] [Server]
      
    • オプション

      • --username(-u)
      • --password(-p)
        WARNING! Using --password via the CLI is insecure. Use --password-stdin.
  • プッシュ

    • Docker Hub

      >docker image push daisukenishino77/hello-world2:hogehoge
      
      • 構文

        docker image push [ImageName[:Tag]]
        
      • オプション
        なし。

    • Docker Trusted Registry(Dockerレジストリの該当節を参照)

      • タグを以下の様に変更

        docker image tag LocalImageName [RegistryのAddress:Port]/ImageName[:hogehoge]
        
      • プッシュ

        docker image push [RegistryのAddress:Port]/ImageName[:hogehoge]
        
      • プル

        docker image pull [RegistryのAddress:Port]/ImageName[:hogehoge]
        
  • ログアウト

    >docker logout
    Removing login credentials for https://index.docker.io/v1/
    
    • 構文

      docker logout [Server]
      
    • オプション
      なし。

削除(イメージ)

設定して再コンテナ化

コンテナのターミナルに入る

  • イメージで

    >docker run -t -i [ImageName[:Tag]] /bin/bash
    
  • コンテナで

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

設定

例:Mosquitto

コンテナの再コンテナ化

ただし、Dockerfileの方が再現性が高いらしい。

>docker container commit beb3d097cd67 www_server2
  • 構文

    docker container commit [Option] ContainerID [ImageName[:Tag]]
    
  • オプション

    • --author(-a)="" : 作者
    • --message(-m)="" : コミット・メッセージ
    • --pause(-p)=true : コンテナをコミット時に一時停止(pause)する
    • --change(-c)=[] : イメージをコミット時の Dockerfile 命令を追加指定

全部ほにゃららする。

コンテナの

停止(コンテナの一括)

  • Bash

    $ sudo docker stop $(sudo docker ps -aq)
    
  • PowerShell

    >docker ps -q | %{ docker stop $_ }
    

削除(コンテナの一括)

  • Bash

    $ sudo docker rm -f $(sudo docker ps -aq)
    
  • PowerShell

    >docker ps -aq | %{ docker rm $_ }
    

イメージの

削除(イメージの一括)

  • Bash

    $ sudo docker rmi $(sudo docker images -q)
    
  • PowerShell

    >docker images -q | %{ docker rmi $_ }
    

参考

docs.docker.com

Qiita

移行メモ

  • 元の PukiWiki は同一ページ内に同名の見出し(「調査」「削除」「作成」「一覧」「停止」)が 複数あり、そのうち「コンテナの削除」と「イメージの削除」は アンカ(#d49250e8)まで重複していたため、 「イメージの一括削除」へのリンクが「コンテナの一括削除」に飛んでいた。 GitHub Wiki では見出しからアンカが自動生成されるため、 見出しに括弧で対象を補ってアンカを一意にし、リンクを正しい節に張り替えた。
  • docker image rm のオプション --no-prun--no-prune の誤記のため修正した。
  • docker container ls のオプション --all(-a) の説明が「すべてのイメージ」に なっていたため「すべてのコンテナ(停止中を含む)」に修正した。
  • docker image pull のオプションが -all(-a)(ハイフン1つ)になっていたため、 実際のオプション名である --all-tags(-a) に修正した。
  • 「ログアウト」の構文が docker login [Server] になっていたため docker logout [Server] に修正した。
  • docker container rm--volume(-v) は説明が空欄だったため、 「コンテナに関連付けられた匿名ボリュームも削除」を補った。
  • docker build / docker image save / docker image load の構文に 「イメージ名」「保存ファイル名」がオプションと重複して書かれていたため、 オプション側の説明に寄せて整理した。
  • docker container stop / restart--time(-t) の説明が 「停止時間」「再起動時間」となっていたが、実際は強制終了までの猶予時間のため 「停止までの猶予時間(秒)」とした。
  • 「Mosquito」は「Mosquitto」の誤記のため修正し、 マイクロソフト系技術情報 Wiki の URL リンクは 移行済みの Mosquitto / Docker for Windows に張り替えた。
  • 「再接続のテスト」は同名コンテナを二重起動する手順に読めたため、 別のターミナルから実行する旨を補った。

Tags: 移行, Docker, Dockerコマンド, コンテナ, イメージ, docker container, docker image, docker network

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally