「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfrastructure.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>Docker]] *目次 [#c1492759] #contents *概要 [#xfc2d950] Dockerコマンド *詳細 [#vd90682f] 以下、Docker for Windowsでの実行結果。 *チュートリアル [#gefc9e57] **version [#ebe418d5] >docker version **hello world [#cf7a11ff] ※ 「docker container run」の詳細は[[コチラ>#tfd54e44]] -対話実行 --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 **search [#le258f2c] -検索 >docker search ubuntu NAME DESCRIPTION STARS OFFICIAL AUTOMATED ... ... ... ... ... --構文 docker search [Option] 検索キーワード --オプション --- --filter=[ ] : フィルターを使用 --- --limit=n : 結果出力の最大数を指定 --- --no-trunc : 出力内容を省略しない **system info [#febc09a3] ***基本 [#m6adb14b] >docker system info ***ディスク [#a7488224] -概要 >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 : すべてのイメージ **イメージとコンテナの操作 [#lb9b55df] 新しいサブコマンド体系 -docker ps は docker container ls (コンテナの一覧) -docker images は docker image ls (イメージの一覧) -docker history は docker image history (イメージの履歴) ***イメージ [#p85a4399] images系のコマンドは、docker imageサブコマンドになったらしい。 -イメージ名 --ImageName --<DockerHub UserName>/ImageName -一覧 >docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE ... ... ... ... ... --構文 docker image ls [Option] [RepositoryName] --オプション --- --all(-a)=false : すべてのイメージ --- --digests=false : digestの表示有無 --- --no-trunc : 出力内容を省略しない --- --quiet(-q) : イメージIDのみ表示 -プル~ [[コチラ>#ubfd2aef]] --構文 ---通常 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 : すべてのイメージ ***コンテナ [#h61e19d2] 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 /FilePath <コンテナID>:/FilePath ---コンテナからホスト docker cp <コンテナID>:/FilePath /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サーバの構築と実行 [#j1fb7979] ***ダウンロード [#ubfd2aef] >docker image pull nginx ***構築 [#d008f809] ... ***実行 [#tfd54e44] >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 --環境設定 ---環境変数 ---読み取り専用 ---作業ディレクトリ ---ユーザ名 ***アクセス [#z47395d1] http://localhost:8080/ ***コンテナ識別子取得 [#ze806f0c] >docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES beb3d097cd67 ... ... ... ... ... www_server ※ コンテナ識別子としては、「CONTAINER ID」、「NAMES」が使用できる。 ***ポート転送の確認 [#f17e2310] >docker container port www_server >docker container port beb3d097cd67 80/tcp -> 0.0.0.0:8080 ***ステータス確認 [#l5d88621] >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 ... ... ... ... ... ***プロセス確認 [#o2a0111b] >docker container top www_server >docker container top beb3d097cd67 PID USER TIME COMMAND ... ... ... ... ***ログ確認 [#b052f13f] >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/" ***[[調査>#h61e19d2]] [#j0d50d8d] >docker container inspect www_server >docker container inspect beb3d097cd67 ***停止 [#u46f29d4] コンテナの停止。 >docker container stop www_server >docker container stop beb3d097cd67 -構文 docker container stop [Option] コンテナ識別子 [コンテナ識別子] -オプション -- --time(-t) n : 停止時間 ***再開 [#h0087f99] 停止しているコンテナの再開。 >docker container start www_server >docker container start beb3d097cd67 -構文 docker container start [Option] コンテナ識別子 [コンテナ識別子] -オプション -- --attach(-a) : STDOUT、STDERR にアタッチ -- --interactive(-i) : STDIN にアタッチ ***再起動 [#u780803f] コンテナの再起動。 >docker container restart www_server >docker container restart beb3d097cd67 -構文 docker container restart [Option] コンテナ識別子 [コンテナ識別子] -オプション -- --time(-t) n : 再起動時間 ***中断・再開 [#m6e0c005] コンテナの中断・再開。 -中断 >docker container pause www_server >docker container pause beb3d097cd67 --構文 docker container pause コンテナ識別子 --オプション~ なし -再開 >docker container unpause www_server >docker container unpause beb3d097cd67 --構文 docker container unpause コンテナ識別子 --オプション~ なし ***削除 [#n7bb58c6] コンテナの削除。 >docker container rm www_server -構文 docker container rm [Option] コンテナ識別子 [コンテナ識別子] -オプション -- --force(-f) : 強制削除 -- --volume(-v) : **ネットワーク [#i26844ae] ***一覧 [#j9051b59] >docker network ls -構文 docker network ls [Option] -オプション -- --filter=[ ] : フィルターを使用 -- --no-trunc : 出力内容を省略しない -- --quiet(-q) : ネットワークIDのみ表示 ***作成 [#a74dca03] >docker network create --driver=bridge www_network -構文 docker network create [Option] NetworkName -オプション --network create — Docker-docs-ja ドキュメント~ http://docs.docker.jp/engine/reference/commandline/network_create.html ***調査 [#m687cb87] -[[コンテナ側>#j0d50d8d]] -ネットワーク側 >docker network inspect www_network ***接続 [#l8e52754] -接続 >docker network connect www_network www_server --構文 docker network connect [Option] NetworkName コンテナ識別子 --オプション --- --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 ***切断 [#be3efaae] >docker network disconnect www_network www_server ***削除 [#v15c345f] >docker network rm www_network **イメージの作成とプッシュ [#dc9017f9] ***作成 [#w8fe69f8] -コンテナから作成 >docker container commit -a "daisuke nishino" www_server daisukenishino77/www_server2:hogehoge --構文 docker container commit [Option] コンテナ識別子 [ImageName[:Tag]] --オプション --- --author(-a)="" : 作者 --- --message(-m)="" : コミット・メッセージ --- --pause(-p)=true : コンテナをコミット時に一時停止(pause)する --- --change(-c)=[] : イメージをコミット時の Dockerfile 命令を追加指定 -Export/Importで作成~ ContainerからExportしてImageからImportする。 ***[[Dockerファイル]]から作成 [#b85d83df] ***プッシュ [#x383948e] -ログイン >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 image push daisukenishino77/hello-world2:hogehoge --構文 docker image push ImageName[:TagName] --オプション~ なし。 -ログアウト >docker logout Removing login credentials for https://index.docker.io/v1/ --構文 docker login [Server] --オプション~ なし。 *参考 [#wbcef824] -docker | Docker Documentation~ https://docs.docker.com/engine/reference/commandline/docker/ -Docker ドキュメント日本語化プロジェクト — ドキュメント~ http://docs.docker.jp/index.html --http://docs.docker.jp/engine/reference/commandline/toc.html --http://docs.docker.jp/machine/reference/toc.html --http://docs.docker.jp/compose/reference/toc.html --http://docs.docker.jp/swarm/reference/index.html -Dockerコマンドメモ~ https://qiita.com/curseoff/items/a9e64ad01d673abb6866 -docker コマンド チートシート~ https://qiita.com/voluntas/items/68c1fd04dd3d507d4083 -docker container / image コマンド新旧比較~ https://qiita.com/zembutsu/items/6e1ad18f0d548ce6c266