Dockerイメージとコンテナの一般的な操作の詳細な説明

Dockerイメージとコンテナの一般的な操作の詳細な説明

画像アクセラレータ

中国の Docker Hub からイメージをプルすることが難しい場合があります。この場合、イメージ アクセラレータを構成できます。多くの国内クラウド サービス プロバイダーは、次のような国内アクセラレータ サービスを提供しています。

NetEase クラウド アクセラレータ https://hub-mirror.c.163.com
Alibaba Cloud Accelerator(取得するにはログインが必要です): https://cr.console.aliyun.com/cn-hangzhou/mirrors

国内の主要クラウドサービスプロバイダーはすべて Docker イメージアクセラレーションサービスを提供しています。Docker を実行するクラウドプラットフォームに応じて、対応するイメージアクセラレーションサービスを選択することをお勧めします。詳細については、公式ドキュメントを参照してください。

CentOS7 システムでは、/etc/docker/daemon.json に次の内容を記述してください (ファイルが存在しない場合は、新しいファイルを作成してください)

[root@docker01 ~]# vim /etc/docker/daemon.json
{
 「レジストリミラー」: [
  「https://hub-mirror.c.163.com」
 ]
}

ファイルが json 仕様に準拠していることを確認する必要があります。準拠していないと Docker を起動できません。

その後、サービスを再起動します。

systemctlデーモンリロード
systemctl dockerを再起動します

アクセラレータが効果的かどうかを確認する

以下のコマンドを実行します。結果に次の内容が表示されれば、設定は成功したことを意味します。

[root@docker01 ~]# docker info # システム全体の情報を表示します………………
レジストリミラー:
 https://hub-mirror.c.163.com/
ライブリストアが有効: false

警告: bridge-nf-call-iptables が無効になっています
警告: bridge-nf-call-ip6tables が無効になっています

Dockerミラー操作

注意: Docker がコンテナを実行する前に、対応するイメージがローカルに存在している必要があります。イメージがローカルに存在しない場合、Docker はイメージ リポジトリからイメージをダウンロードします。

検索ミラーを検索

[root@docker01 ~]# docker search centos
名前 説明 星 公式 自動化
centos CentOS の公式ビルド。5934 [OK]    
ansible/centos7-ansible Centos7 上の Ansible 128 [OK]
jdeathe/centos-ssh OpenSSH / Supervisor / EPEL/IUS/SCL リポジトリ - … 114 [OK]
consol/centos-xfce-vnc 「ヘッドレス」VNC セッションを備えた Centos コンテナ… 114 [OK]
centos/mysql-57-centos7 MySQL 5.7 SQL データベース サーバー 74        
………… 

ミラーセンターから画像をダウンロードする

# フォーマット: docker pull <image_name>:<tag>、タグがない場合は、デフォルトは最新です
[root@docker01 ~]# docker pull centos:latest
最新: library/centos から取得
8a29a15cefae: プル完了 
ダイジェスト: sha256:fe8d824220415eed5477b63addf40fb06c3b049404242b31982106ac204f6700
ステータス: centos:latest の新しいイメージをダウンロードしました

画像を中央に押し出す

フォーマット: docker push <image_name>:<tag>
[root@docker01 ~]# docker push registry.cn-beijing.aliyuncs.com/google_registry/centos:latest

注: 質問がある場合は、今のところ無視してください。プライベート倉庫の構築に関する記事で後で再度説明します。

画像 画像一覧

[root@docker01 ~]# docker images # または docker image ls
リポジトリ タグ イメージ ID 作成 サイズ
centos 最新 470671670cac 2か月前 237MB

画像をローカルに保存する

# フォーマット: docker save -o <保存ファイル名> <image_name:tag>|<image_id>
[root@docker01 docker_test]# docker save -o centos_docker_20200413.tar centos:latest 
[root@docker01 docker_test]# ll -h
合計 234M
-rw------ 1 ルート ルート 234M 4月13日 16:21 centos_docker_20200413.tar

rmi 画像を削除

# フォーマット: docker rmi <image_name:tag>|<image_id>
[root@docker01 docker_test]# docker イメージ
リポジトリ タグ イメージ ID 作成 サイズ
centos 最新 470671670cac 2か月前 237MB
[root@docker01 docker_test]# docker rmi 470671670cac # イメージを削除します [root@docker01 docker_test]# docker images
リポジトリ タグ イメージ ID 作成 サイズ

読み込みイメージをインポート

# フォーマット: docker load -i <image_file>
[root@docker01 docker_test]# docker load -i centos_docker_20200413.tar
[root@docker01 docker_test]# docker イメージ 
リポジトリ タグ イメージ ID 作成 サイズ
centos 最新 470671670cac 2か月前 237MB

タグ

# フォーマット: docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
[root@docker01 docker_test]# docker イメージ 
リポジトリ タグ イメージ ID 作成 サイズ
centos 最新 470671670cac 2か月前 237MB 
[root@docker01 docker_test]# docker タグ centos:latest centos:20200413
[root@docker01 docker_test]# docker イメージ 
リポジトリ タグ イメージ ID 作成 サイズ
centos 20200413 470671670cac 2か月前 237MB
centos 最新 470671670cac 2か月前 237MB

使用方法: 必要に応じて、Docker イメージに新しいタグを付けます。

infoはシステム全体の情報を表示します

[root@docker01 ~]# docker情報 
コンテナ: 0
 ランニング: 0
 一時停止: 0
 停止: 0
画像: 1
サーバーバージョン: 18.06.3-ce
ストレージ ドライバー: overlay2
 バックアップファイルシステム: xfs
 d_type をサポート: true
 ネイティブオーバーレイ差分: true
ログドライバー: json-file
cgroup ドライバー: cgroupfs
プラグイン:
 ボリューム: ローカル
 ネットワーク: ブリッジ ホスト macvlan null オーバーレイ
 ログ: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
群れ: 非アクティブ
ランタイム: runc
デフォルトのランタイム: runc
初期化バイナリ: docker-init
コンテナバージョン: 468a545b9edcd5932818eb9de8e72413e616e86e
runc バージョン: a592beb5bc4c4092b1b1bac971afed27687340c5
初期化バージョン: fec3683
セキュリティ オプション:
 seccomp
 プロフィール: デフォルト
カーネルバージョン: 3.10.0-1062.el7.x86_64
オペレーティング システム: CentOS Linux 7 (コア)
OSタイプ: Linux
アーキテクチャ: x86_64
CPU: 2
合計メモリ: 1.777 GiB
名前: docker01
ID: XIHU:XNWU:II7A:YXUH:BOZ3:JSGG:J3P2:CU2Z:5QHA:5Y64:PZ4V:62DI
Docker ルートディレクトリ: /var/lib/docker
デバッグモード(クライアント): false
デバッグモード(サーバー): false
レジストリ: https://index.docker.io/v1/
ラベル:
実験的: 偽
安全でないレジストリ:
 127.0.0.0/8
レジストリミラー:
 https://hub-mirror.c.163.com/
ライブリストアが有効: false

警告: bridge-nf-call-iptables が無効になっています
警告: bridge-nf-call-ip6tables が無効になっています

システムイメージボリュームビュー

もう一つ注意すべき点は、docker image ls リスト内のイメージの合計サイズは、すべてのイメージの実際のディスク消費量ではないということです。 Docker イメージは継承および再利用できる多層ストレージ構造であるため、同じベースイメージを使用するため、異なるイメージに共通のレイヤーが存在する場合があります。 Docker は Union FS を使用するため、同じレイヤーのコピーを 1 つだけ保存すればよく、実際に占有されるイメージのハード ディスク領域は、このリストのイメージ サイズの合計よりもはるかに小さくなる可能性があります。

次のコマンドを使用すると、イメージ、コンテナ、データ ボリュームが占有しているスペースを簡単に表示できます。

[root@docker01 docker_test]# docker システム df
タイプ 合計 アクティブサイズ 再利用可能
画像 2 0 440.1MB 440.1MB (100%)
コンテナ 0 0 0B 0B
ローカルボリューム 0 0 0B 0B
キャッシュを構築 0 0 0B 0B

検査はイメージまたはコンテナの詳細を表示します

# フォーマット: docker examine <イメージ ID>|<イメージ名>|<コンテナ ID>|<コンテナ名>
[root@docker01 ~]# docker inspect centos:latest # イメージの詳細を表示 [root@docker01 ~]# docker inspect 67ba647b0151 # コンテナの詳細を表示

Dockerコンテナの操作

実行してコンテナを作成する

# 形式: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
[root@docker01 ~]# docker run -i -t --name centos01 centos:latest /bin/bash
[root@f7c4da3cecad /]# # これで Docker コンテナに入りました [root@f7c4da3cecad /]# exit # コンテナを終了すると、コンテナは停止します [通常の状況]
[root@docker01 ~]#

パラメータの説明:

-i 対話型操作
-t 端末を割り当てる
--name 実行するコンテナの名前 /bin/bash の最後に実行されるコマンド

ps ビュー コンテナ

[root@docker01 ~]# docker ps # 実行中のコンテナを表示します コンテナ ID イメージ コマンド 作成日時 ステータス ポート 名前
[root@docker01 ~]# 
[root@docker01 ~]# docker ps -a # 実行中および停止中のコンテナを含むすべてのコンテナを表示します。コンテナ ID イメージ コマンド 作成日時 ステータス ポート 名前
f7c4da3cecad centos:latest "/bin/bash" 4 分前 終了 (0) 36 秒前 centos01

コンテナを起動する

# フォーマット: docker start <コンテナ名>|<コンテナID>
[root@docker01 ~]# docker ps -a
コンテナID イメージ コマンド 作成ステータス ポート名
f7c4da3cecad centos:latest "/bin/bash" 10 分前 終了 (0) 3 秒前 centos01
[root@docker01 ~]# docker start f7c4da3cecad # コンテナ f7c4da3cecad を起動します
[root@docker01 ~]# docker ps 
コンテナID イメージ コマンド 作成ステータス ポート名
f7c4da3cecad centos:latest "/bin/bash" 10 分前 3 秒前 centos01

再起動はコンテナを再起動します

# フォーマット: docker restart <コンテナ名>|<コンテナID>
[root@docker01 ~]# docker ps 
コンテナID イメージ コマンド 作成ステータス ポート名
f7c4da3cecad centos:latest "/bin/bash" 15 分前 4 分前 centos01
[root@docker01 ~]# docker restart f7c4da3cecad # コンテナを再起動します f7c4da3cecad
[root@docker01 ~]# docker ps 
コンテナID イメージ コマンド 作成ステータス ポート名
f7c4da3cecad centos:latest "/bin/bash" 15 分前 1 秒前 centos01

コンテナを停止する

# フォーマット: docker stop <コンテナ名>|<コンテナID>
[root@docker01 ~]# docker ps 
コンテナID イメージ コマンド 作成ステータス ポート名
f7c4da3cecad centos:latest "/bin/bash" 3 時間前 4 分前 centos01
[root@docker01 ~]# docker stop f7c4da3cecad # コンテナ f7c4da3cecad を停止します
[root@docker01 ~]# docker ps -a
コンテナID イメージ コマンド 作成ステータス ポート名
f7c4da3cecad centos:latest "/bin/bash" 3 時間前 終了 (0) 10 秒前 centos01

rmはコンテナを削除します

# フォーマット: docker rm <コンテナ名>|<コンテナ ID>
[root@docker01 ~]# docker ps -a
コンテナID イメージ コマンド 作成ステータス ポート名
f7c4da3cecad centos:latest "/bin/bash" 3 時間前 終了 (0) 10 秒前 centos01
[root@docker01 ~]# docker rm f7c4da3cecad # 停止したコンテナ f7c4da3cecad を削除します

注意: 実行中のコンテナを強制的に削除する場合は、docker rm -f <コンテナ ID> を使用します。ただし、誤って削除されないように、実稼働環境でコンテナを強制的に削除することはお勧めしません。

コンテナの名前を変更する名前を変更する

# フォーマット: docker rename CONTAINER NEW_NAME
[root@docker01 ~]# docker ps 
コンテナID イメージ コマンド 作成ステータス ポート名
67ba647b0151 centos:latest "/bin/bash" 約 1 分前 約 1 分前 centos01
[root@docker01 ~]# docker rename 67ba647b0151 centos001 # コンテナの名前を変更 [root@docker01 ~]# docker ps 
コンテナID イメージ コマンド 作成ステータス ポート名
67ba647b0151 centos:latest "/bin/bash" 2分前 約1分前 centos001

コンテナ内で実行または実行中のコンテナ内でコマンドを実行する

コンテナに入る

[root@docker01 ~]# docker exec -it f7c4da3cecad bash
[ルート@f7c4da3cecad /]#

注意: docker attach を介してコンテナに入ることはお勧めしません。

指定されたコンテナがコンテナ外でコマンドを実行できるようにする

# tty ターミナルを割り当てる必要がないため、-t オプションはありません [root@docker01 ~]# docker exec -i f7c4da3cecad bash -c "p​​s -ef"
UID PID PPID C STIME TTY 時間 コマンド
ルート 1 0 0 10:12 pts/0 00:00:00 /bin/bash
ルート 78 0 0 10:19 ? 00:00:00 ps -ef

cpはファイルまたはディレクトリをコピーします

ホストファイルまたはディレクトリをDockerコンテナにコピーする

[root@docker01 ~]# docker exec -i 67ba647b0151 bash -c "ls -l /root"
合計 12
-rw------ 1 ルート ルート 2366 1月13日 21:49 anaconda-ks.cfg
-rw-r--r-- 1 ルート ルート 435 1月13日 21:49 anaconda-post.log
-rw------ 1 ルート ルート 2026年1月13日 21:49 オリジナルks.cfg
[root@docker01 ~]# 
[root@docker01 ~]# docker cp /usr/bin/telnet 67ba647b0151:/root/ # ファイルをコピー[root@docker01 ~]# docker cp /root/basedOptimi 67ba647b0151:/root/ # ディレクトリをコピー[root@docker01 ~]# docker exec -i 67ba647b0151 bash -c "ls -l /root"
合計 112
-rw------ 1 ルート ルート 2366 1月13日 21:49 anaconda-ks.cfg
-rw-r--r-- 1 ルート ルート 435 1月13日 21:49 anaconda-post.log
drwxr-xr-x 2 ルート ルート 30 3月 8 19:59 basedOptimi
-rw------ 1 ルート ルート 2026年1月13日 21:49 オリジナルks.cfg
-rwxr-xr-x 1 ルート ルート 101776 2017年8月3日 telnet

Dockerコンテナ内のファイルまたはディレクトリをホストマシンにコピーする

[root@docker01 ~]# docker cp 67ba647b0151:/root/original-ks.cfg /root/ # ファイルをコピー [root@docker01 ~]# docker cp 67ba647b0151:/etc /root/ # ディレクトリをコピー

ログコンテナログを表示

[root@docker01 ~]# docker ps 
コンテナID イメージ コマンド 作成ステータス ポート名
f7c4da3cecad centos:latest "/bin/bash" 3 時間前 1 秒前 centos01
# コンテナのログを取得 [root@docker01 ~]# docker logs -f --tail 500 f7c4da3cecad
…………

パラメータの説明:

-f 出力を連続的に印刷する
--tail 500 ログの最後の500行を出力します

統計コンテナリソース使用統計

監視に使用可能

[root@docker01 ~]# docker stats <コンテナID>|<コンテナ名> # 継続的な監視 [root@docker01 ~]# docker stats --no-stream <コンテナID>|<コンテナ名> # 継続的な監視ではないため、最初に返された結果のみが表示されます

最上位コンテナで実行中のプロセス

[root@docker01 ~]# docker ps 
コンテナID イメージ コマンド 作成ステータス ポート名
67ba647b0151 centos:latest "/bin/bash" 2 時間前 2 時間前 centos001 
# コンテナ内で実行中のプロセス情報を表示する [root@docker01 ~]# docker top 67ba647b0151
UID PID PPID C STIME TTY 時間 コマンド
ルート 3302 3285 0 21:13 pts/0 00:00:00 /bin/bash

ポートコンテナは特定のポートをマップします

コンテナのマッピングポートは、ランダムポートマッピング、単一ポートマッピングの指定、複数ポートマッピングの指定です。

画像を取得する

[root@docker01 ~]# docker pull registry.cn-beijing.aliyuncs.com/google_registry/nginx:1.17
[root@docker01 ~]# docker タグ ed21b7a8aee9 nginx:1.17
[root@docker01 ~]# docker イメージ | grep 'nginx'
nginx 1.17 ed21b7a8aee9 2週間前 127MB
registry.cn-beijing.aliyuncs.com/google_registry/nginx 1.17 ed21b7a8aee9 2 週間前 127MB

ランダムポートのマッピング

[root@docker01 ~]# docker run -d -P --name nginx01 nginx:1.17
e90c9faaf8e3387920dd9763bf5c7df9dd17856673868bb512cec78741ff71dc
[root@docker01 ~]# docker ps 
コンテナID イメージ コマンド 作成ステータス ポート名
e90c9faaf8e3 nginx:1.17 "nginx -g 'daemon of..." 3 秒前 2 秒前に起動 0.0.0.0:1025->80/tcp nginx01

例:

0.0.0.0:1025->80/tcp 最初の部分はホストポート、2番目の部分はコンテナポートです

コンテナログ:

[root@docker01 ~]# docker ログ -f --tail 500 nginx01

ブラウザアクセス:

指定された単一のポートをマップする

[root@docker01 ~]# docker run -d -p 81:80 --name nginx02 nginx:1.17
04478222f0dc981883f25504164be3af7da49248886cee7386ccc89b80cc57a1
[root@docker01 ~]# docker ps | grep 'nginx02'
04478222f0dc nginx:1.17 "nginx -g 'daemon of..." 29 秒前 28 秒前に起動 0.0.0.0:81->80/tcp nginx02

ブラウザアクセス:

指定された複数のポートをマップする

[root@docker01 ~]# docker run -d -p 85:80 -p 445:443 --name nginx03 nginx:1.17
5886e52ff8e934bc827c8d7753a532b9062bd045799d0658a008e371e6ecd09c
[root@docker01 ~]# docker ps | grep 'nginx03'
5886e52ff8e9 nginx:1.17 "nginx -g 'daemon of..." 12 秒前 11 秒前にアップ 0.0.0.0:85->80/tcp、0.0.0.0:445->443/tcp nginx03

おすすめの読み物
1. Dockerの導入とインストール

Docker イメージとコンテナの一般的な操作に関するこの記事はこれで終わりです。より関連性の高い Docker イメージとコンテナの操作については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • CentOS 7.2 サーバー上にプライベート Docker イメージ リポジトリを設定する例
  • 一般的な Docker コマンドの概要: インストール、ミラーリング、基本的なコンテナ操作
  • Dockerで作成したコンテナを削除する方法
  • Dockerコンテナの操作手順の概要と詳細説明
  • Dockerコンテナのインポ​​ートとエクスポートに関するチュートリアル
  • Linux システムに docker をインストールし、ssh 経由で docker コンテナにログインする方法
  • Dockerコンテナでホストディレクトリをマウントする方法
  • Dockerコンテナを終了するための解決策
  • Docker コンテナで IPython を使用するための入門ガイド

<<:  Vue3は画像拡大鏡効果を実現します

>>:  MySQL 8.0.18 のさまざまなバージョンのインストールとインストール中に発生した問題 (要点の要約)

推薦する

インストールされていないバージョンの MySQL を使用する手順とパスワードを忘れた場合の解決策

最初のステップは、圧縮されたパッケージを対応するディスクに解凍することです。 2 番目の手順は、cm...

Angularプロジェクトにおける共有モジュールの実装の詳細な説明

目次1. 共有共通モジュール2. 共有マテリアルモジュール3. 共有確認ダイアログ1. 共有共通モジ...

CentOS で LibreOffice を使用してドキュメント形式を変換する方法

プロジェクト要件では、アップロードされたドキュメントの前処理が必要です。ユーザーが doc 形式でド...

タグのhref属性とonclickイベントの使用例

a タグは主にページ ジャンプを実装するために使用され、これは href 属性または onclick...

フロントエンドの上級者向けコースでは、JavaScript のストレージ機能の使い方を学習します。

目次序文背景実施計画の考え方js ストレージ機能ソリューション設計やっと要約する序文どの SaaS ...

MySQL DATE_FORMAT関数の使用

タオバオが、ダブル11に最も多くの注文をした2人のユーザー、ユーザー1:「ショッピングの皇帝、陳哈哈...

Vue+Bootstrapでシンプルな学生管理システムを実現

参考までに、vueとbootstrapを使って比較的シンプルな生徒管理システムを作りました。具体的な...

MySQL 権限制御の詳細分析

目次1. グローバルレベル2. データベースレベル3. 表面レベル4. 列レベルの権限5. サブルー...

Centos6にMysql5.7をインストールする方法

環境セントロス6.6 MySQL 5.7インストールシステムがインストールされている場合は、まずアン...

Ubuntu 16.04 に nvidia ドライバー + CUDA + cuDNN をインストールする詳細なチュートリアル

準備1. GPUがCUDAをサポートしているかどうかを確認するlspci | grep -i nvi...

ウェブデザインの達人がよく使うレスポンシブフレームワークを共有する(要約)

この記事では、Web デザインの達人がよく使用するレスポンシブ フレームワーク (概要) を紹介し、...

Docker ベースの Tomcat クラスタと Nginx ロード バランシングの展開の概要

目次前面に書かれた1. Ngixnイメージの作成2. Java Web (Tomcat) アプリケー...

HTML タグ sup と sub の応用の紹介

HTML タグ: 上付き文字HTML では、<sup> タグは上付き文字のテキストを定義...

Docker ポート マッピングと外部アクセス不可の問題

Docker コンテナはサービスを提供し、ポート 8888 をリッスンします。外部からアクセスできる...

Vue フロントエンドと Django バックエンドを使用して、一定期間内のデータをクエリする方法

序文開発プロセスでは、すべてのデータではなく特定の期間内のデータをクエリするなど、クエリのフィルタリ...