Dockerで最もよく使われるイメージコマンドとコンテナコマンドの詳細な説明

Dockerで最もよく使われるイメージコマンドとコンテナコマンドの詳細な説明

この記事では、Docker の使用で最もよく使用されるイメージ コマンドとコンテナ コマンドを一覧表示し、コンテナ データ ボリュームの操作方法とコンテナ データのバックアップ方法を説明します。これらのコマンドを習得したら、簡単なアプリケーションのデプロイメントを練習し、Docker イメージの構築、バックアップ、リカバリ、移行、イメージ リポジトリ、ネットワーク、クラスターなどについてさらに詳しく学ぶことができます。

ミラー関連コマンド

公式ドキュメント: https://docs.docker.com/reference/

ミラーを見る

[root@localhost ~]# docker イメージ
リポジトリ タグ イメージ ID 作成 サイズ
hello-world 最新 bf756fb1ae65 7ヶ月前 13.3kB
  • REPOSITORY : リポジトリ内のイメージの名前。この記事ではイメージ名と呼びます。
  • TAG : 画像タグ
  • IMAGE ID : 画像ID
  • CREATED : 画像が作成された日付(画像が取得された日付ではありません)
  • SIZE : 画像サイズ

これらのイメージは、Docker ホストの/var/lib/dockerディレクトリに保存されます。

検索ミラー

ネットワークから必要なイメージを見つける必要がある場合は、次のコマンドで検索できます。

docker イメージ名の検索

  • NAME : 画像名
  • DESCRIPTION : 画像の説明
  • STARS : 画像の人気度を反映するユーザー評価
  • OFFICIAL : 公式ビルドかどうか
  • AUTOMATED : 自動的にビルドされ、イメージが Docker Hub の自動ビルド プロセスによって作成されたことを示します。

画像をプルする

イメージをプルするということは、中央リポジトリからローカル コンピューターにイメージをダウンロードすることを意味します。

docker pull イメージ名

Centos イメージをローカル コンピューターにプルする場合、タグ イメージ ラベル情報を宣言しないと、デフォルトで最新バージョンがプルされます。また、https://hub.docker.com/ からイメージを検索して、サポートされているタグ情報を表示することもできます。

タグ情報を表示して、centos7 イメージをダウンロードします。

docker pull centos:7

画像の削除

ID で画像を削除します。

# 単一のイメージを削除する docker rmi イメージ ID
# 複数のイメージを削除する docker rmi イメージID イメージID イメージID

docker images -qすべてのイメージの ID を照会することができ、コマンドを組み合わせることですべてのイメージを削除できます。

docker rmi `docker イメージ -q`

注意: コンテナがイメージから作成された場合、そのイメージは削除できません。

解決策: 最初にイメージ内のコンテナを削除し、次にイメージを削除します。

コンテナ関連コマンド

コンテナを表示

実行中のコンテナを表示します。

[root@localhost ~]# docker ps
コンテナID イメージ コマンド 作成ステータス ポート名
  • CONTAINER ID : コンテナID
  • IMAGE : 所属する画像
  • COMMAND
  • CREATED : 作成日時
  • STATUS : コンテナのステータス
  • PORTS :ポート
  • NAMES : コンテナ名

停止されたコンテナを表示します。

docker ps -f ステータス=終了

すべてのコンテナ(実行中と停止中の両方)を表示します。

ドッカーps -a

最後に実行されたコンテナを表示します。

ドッカーps -l

コンテナの作成と起動

docker run [オプション] イメージ [コマンド] [引数...]
  • -i : コンテナを実行することを意味します。
  • -t : コンテナが起動後にコマンドラインに入ることを示します。これら 2 つのパラメータを追加すると、コンテナの作成後にコンテナにログインできるようになります。つまり、疑似端末を割り当てます。
  • --name : 作成されたコンテナに名前を付けます。
  • -v : ディレクトリ マッピング関係を示します (前者はホスト ディレクトリ、後者はホストにマッピングされたディレクトリです)。複数の -v を使用して、複数のディレクトリまたはファイルをマッピングできます。注: ディレクトリ マッピングを実行し、ホスト マシンで変更を加えてから、それをコンテナーに共有するのが最適です。
  • -d : 実行後に -d パラメータを追加すると、保護されたコンテナが作成され、バックグラウンドで実行されます (コンテナの作成後にコンテナに自動的にログインすることはありません。 -i -t パラメータのみを追加すると、コンテナの作成後にコンテナに自動的にログインします)。
  • -p : ポートマッピングを示します。前者はホストポート、後者はコンテナ内のマッピングポートです。複数の -p オプションを使用して複数のポートをマップできます。
  • -P : ホスト上の利用可能なポートをランダムに使用して、コンテナで公開されているポートにマッピングします。

コンテナを作成して入力する

次のコマンドラインは、イメージ AA を通じてコン​​テナ BB を作成し、コンテナを実行してコンテナの/bin/bashに入ることを意味します。

docker run -it --name コンテナ名 イメージ名: tag /bin/bash

注: Docker コンテナを実行するにはフォアグラウンド プロセスが必要です。フォアグラウンド プロセスが実行されていない場合、コンテナはアイドル状態であると見なされ、自動的に終了します。

現在のコンテナを終了する

出口

保護された方法でコンテナを作成する

docker run -di --name コンテナ名 イメージ名: タグ

ログインガードコンテナモード

docker exec -it コンテナ名 | コンテナID /bin/bash

コンテナの停止と起動

# コンテナを停止します docker stop コンテナ名 | コンテナID
# コンテナを起動します docker start コンテナ名 | コンテナID

ファイルのコピー

コンテナにファイルをコピーする必要がある場合は、cp コマンドを使用できます。

docker cp コピーするファイルまたはディレクトリ コンテナ名: コンテナディレクトリ

コンテナからファイルをコピーすることも可能です。

docker cp コンテナ名: コンテナディレクトリにコピーするファイルまたはディレクトリ

ディレクトリマウント(コンテナデータボリューム操作)

コンテナを作成するときに、ホスト ディレクトリをコンテナ内のディレクトリにマップして、ホストのディレクトリ内のファイルを変更することでコンテナに影響を与えることができます。この操作は双方向にバインドされているため、コンテナ内の操作はホストにも影響を与え、バックアップ機能を実現します。

ただし、コンテナが削除されても、基礎となるレイヤーはコピーによって実装されているため、ホスト マシンの内容は削除されません。複数のコンテナが同じディレクトリをマウントし、そのうちの 1 つのコンテナを削除しても、他のコンテナの内容は影響を受けません。同様に、下位層はコピーによって実装されます。

ただし、コンテナを削除しても、ホストの内容は削除されません。複数のコンテナが同じディレクトリをマウントし、そのうちの 1 つのコンテナを削除しても、他のコンテナの内容は影響を受けません。

コンテナとホスト間のデータボリュームは参照関係にあります。データボリュームは外部からコンテナにマウントされるため、コンテナのライフサイクルとは独立して存在できます。データボリュームのライフサイクルがコンテナのライフサイクルと同じではないからこそ、コンテナが終了したり削除されたりしてもデータボリュームは影響を受けません。データボリュームのライフサイクルは、どのコンテナも使用しなくなるまで継続します。

コンテナを作成するときは、宿主機目錄:容器目錄の形式で-vパラメータを追加します。次に例を示します。

docker run -di -v /mydata/docker_centos/data:/usr/local/data --name centos7-01 centos:7
# 複数のディレクトリをマウント docker run -di -v /host ディレクトリ:/container ディレクトリ -v /host ディレクトリ 2:/container ディレクトリ 2 イメージ名

ディレクトリのマウント操作で、権限が不十分であるというメッセージが表示される場合があります。これは、CentOS7 のセキュリティ モジュール SELinux が権限を無効にしているためです。docker を実行するときに、 --privileged=trueを使用してコンテナーに権限を追加し、マウントされたディレクトリに権限がない問題を解決します。

匿名マウント

匿名マウントではコンテナ ディレクトリへの書き込みのみが必要で、コンテナ外の対応するディレクトリは/var/lib/docker/volumeに生成されます。

# 匿名マウント docker run -di -v /usr/local/data --name centos7-02 centos:7
# ボリュームデータボリューム情報を表示する docker volume ls 

名前付きマウント

名前付きマウントはデータボリュームに名前を付けるもので、コンテナ外の対応するディレクトリが/var/lib/docker/volumeに生成されます。

# 匿名マウント docker run -di -v docker_centos_data:/usr/local/data --name centos7-03 centos:7
# ボリュームデータボリューム情報を表示する docker volume ls

マウントするディレクトリを指定

最初に説明した方法は、指定されたディレクトリをマウントすることです。このマウント方法では/var/lib/docker/volumeディレクトリにコンテンツは生成されません。

docker run -di -v /mydata/docker_centos/data:/usr/local/data --name centos7-01 centos:7
# 複数のディレクトリをマウント docker run -di -v /host ディレクトリ:/container ディレクトリ -v /host ディレクトリ 2:/container ディレクトリ 2 イメージ名

ディレクトリのマウント関係を表示する

docker volume inspect 數據卷名稱と、データ ボリュームに対応するホスト マシンのディレクトリ アドレスを表示できます。

[root@localhost ~]# dockerボリューム検査docker_centos_data
[
 {
 「作成日時」: 「2020-08-13T20:19:51+08:00」、
 "ドライバー": "ローカル",
 「ラベル」: null、
 「マウントポイント」: 「/var/lib/docker/volumes/docker_centos_data/_data」、
 「名前」: 「docker_centos_data」、
 「オプション」: null、
 「スコープ」: 「ローカル」
 }
]

docker inspect 容器ID或名稱、返された JSON ノードでMounts見つけることで、詳細なデータ マウント情報を表示できます。

読み取り専用/読み取り書き込み

# 読み取り専用。コンテナのデータ管理は、ホスト コンテンツを変更することによってのみ実現できます。
docker run -it -v /host directory:/container directory:ro イメージ名# 読み取り/書き込み、デフォルト。ホストとコンテナは双方向にデータを操作できます。
docker run -it -v /ホストディレクトリ:/コンテナディレクトリ:rw イメージ名

ボリューム-from (継承)

# コンテナ centos7-01 はマウントするディレクトリを指定します docker run -di -v /mydata/docker_centos/data:/usr/local/data --name centos7-01 centos:7
# コンテナ centos7-04 と centos7-05 は、centos7-01 コンテナのマウント ディレクトリを継承するのと同じです。docker run -di --volumes-from centos7-01 --name centos7-04 centos:7
docker run -di --volumes-from centos7-01 --name centos7-05 centos:7

コンテナのIPアドレスを表示する

次のコマンドでコンテナのメタ情報を表示できます。

docker コンテナ名を検査 | コンテナ ID

次のコマンドを直接実行して、IP アドレスを直接出力することもできます。

docker examine --format='{{.NetworkSettings.IPAddress}}' コンテナ名 | コンテナ ID

コンテナの削除

# 指定されたコンテナを削除します docker rm コンテナ名 | コンテナID
# 複数のコンテナを削除する docker rm コンテナ名 | コンテナ ID コンテナ名 | コンテナ ID

Docker run コマンドの詳しい使い方は以前ご紹介しました。興味のある方は参考にしてください!

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

以下もご興味があるかもしれません:
  • Dockerコンテナオーケストレーション実装プロセス分析
  • Docker データボリュームコンテナの作成と使用状況分析
  • Dockerコンテナのデータボリュームの詳細な説明
  • Spring Boot プロジェクトで Docker イメージを生成し、コンテナのデプロイを完了する方法
  • Dockerコンテナ内にkibanaトークナイザーをインストールする方法
  • Dockerコンテナの構築と実行のプロセスの詳細な説明
  • Docker コンテナ アプリケーションで避けるべき 10 の悪い習慣
  • Dockerコンテナのネットワークポート設定プロセスの詳細な説明

<<:  MySQL データベースにおける高同時実行性の問題を解決する方法

>>:  Vueはechartを使用してラベルと色をカスタマイズします

推薦する

MySQLデータベースのマスタースレーブレプリケーションと読み取り書き込み分離に関する詳細なチュートリアル

目次序文1. MySQL マスタースレーブレプリケーション1. サポートされているレプリケーションの...

Linux パーティションまたは論理ボリュームにファイルシステムを作成する方法

序文システムにファイル システムを作成し、それを永続的または非永続的にマウントする方法を学習します。...

Linuxの運用と保守の基本プロセス管理と環境構成分析

目次1. プロセスの基本的な概要2. プロセスの構成要素3. プロセス環境4. プロセスステータス5...

CentOS6.8 は cmake を使用して MySQL5.7.18 をインストールします。

オンライン情報を参考に、cmakeを使用してCentOS6.8サーバーにMySQL5.7.18をイン...

HTML&CSS&JS 互換性ツリー (IE、Firefox、Chrome)

Web デザインにおけるツリーとは何ですか?簡単に言うと、リンクをクリックするとサブディレクトリが展...

Linuxはバイナリモードを使用してmysqlをインストールします

この記事では、LinuxにバイナリモードでMySQLをインストールする具体的な手順を参考までに紹介し...

MYSQL メタデータ ロック (MDL ロック) の理論とロック タイプ テスト

目次MYSQL メタデータ ロック (MDL ロック) 学習理論とロック タイプ テスト1. 予備的...

MySQL データベースのエンコーディングを utf8mb4 に変更する方法

utf8mb4 エンコーディングは utf8 エンコーディングのスーパーセットであり、utf8 と互...

MySQL における tinyint と int の違いの詳細な説明

質問: int(1) と tinyint(1) の違いは何ですか?このような設計では、いずれにしても...

MySQL データ定義言語 DDL の基本ステートメント

MySQL DDL ステートメントDDL、DMLとは何ですか。 DDL はデータ定義言語であり、CR...

ウェブ計算機を実装するためのjs

HTML、CSS、JS を使用してシンプルな Web 計算機を作成する方法は?コンピュータには次の...

Spring Boot 階層化パッケージング Docker イメージの実践と分析 (推奨)

目次1. Springbootプロジェクトを準備する2. 関連する設定を実行する3.パッケージ4.D...

Dockerコンテナ間の通信を実装する方法

シナリオ: laradock 開発環境 (php7.3+mysql5.7) がローカルに構築されてい...

Reactは適応性の高い仮想リストを実装する

目次変換前:変換後: 0x0の基本0x1 「固定高さ」の仮想リストを実装する原理:最適化: 0x2 ...

EDMをHTMLで記述する際の注意点まとめ(メール送信時の一般的な注意点)

フォーマットエンコーディング1. ページの幅は600~800px、長さは1024px以内に設定してく...