.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

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)=false : すべてのイメージ

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

新しいサブコマンド体系

  • docker ps は docker container ls (コンテナの一覧)
  • docker images は docker image ls (イメージの一覧)
  • docker history は docker 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)=false : すべてのイメージ
    • --digests=false : 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(-a)=false : すべてのイメージ
    • --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-prun : 中間イメージを削除しない
  • 削減
    >docker image prune
  • 構文
    docker image prune [Option]
  • オプション
    • --force(-f) : 強制削除
    • --all(-a)=false : すべてのイメージ
  • 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)=false : すべてのイメージ
    • --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]
  • バックグラウンド実行
    • 実行後、削除したり(--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 create [Option] NetworkName

調査

接続

  • 接続
    >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] [ImageName[:Tag]] [Dockerfileの場所]
  • オプション
    • イメージ名およびタグ名は「-t」で指定する。
    • ファイル名は「-f」で指定する。
  • コンテナから作成
    >docker container commit -a "daisuke nishino" www_server daisukenishino77/www_server2:hogehoge
  • 構文
    docker container commit [Option] ContainerID [ImageName[:Tag]]
  • オプション
    • --author(-a)="" : 作者
    • --message(-m)="" : コミット・メッセージ
    • --pause(-p)=true : コンテナをコミット時に一時停止(pause)する
    • --change(-c)=[] : イメージをコミット時の Dockerfile 命令を追加指定

登録

  • ログイン
    >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 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 login [Server]
  • オプション
    なし。

削除

  • ImageIDで
    >docker rmi ImageID
  • ImageName?
    >docker rmi ImageName[:TagName]

全部ほにゃららする。

Bashでのやり方は、ネット上にあるが、
Windows上CMDでのやり方が不明なので、PowerShell?でやる。

※ 以下から、なんとなくパターン化可能なので、  Bashのコマンドを参考に、PowerShell?化できそう。

コンテナの

停止

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

削除

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

イメージの

削除

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

参考

docs.docker.com

Qiita


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-07-03 (金) 20:06:45 (39d)