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を使用してラベルと色をカスタマイズします

推薦する

Win10 構成 Tomcat 環境変数チュートリアル図

設定する前に、次の操作を行う必要があります。 1. まずjdk bloggerをインストールします。...

TypeScript ジェネリックパラメータのデフォルト型と新しい厳密なコンパイルオプション

目次概要コンポーネントクラスの型定義を作成するジェネリック型を使用してPropsとStateを定義す...

Dockerの一般的なコマンドとヒントのまとめ

インストールスクリプトUbuntu / CentOS Debian のインストールに問題があるようで...

Linux Jenkins 構成スレーブノード実装プロセス図

序文: Jenkins のマスター スレーブ分散アーキテクチャは、主に、Jenkins に単一ポイン...

Dockerコンテナのk8sデプロイメントの実装

環境: (docker、k8s クラスター)、前回 docker で起動した Java プログラムの...

HTML、CSS、JSコメントの標準的な使用法の概要

必要なコメントを追加することは、責任感と道徳心のあるフロントエンド開発者が持つべき良い習慣であり、コ...

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

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

MySQL 5.7.21 履歴データディレクトリからデータを復元するチュートリアルの解凍バージョン

状況の説明: データベースが異常に起動およびシャットダウンしたため、サービスを再度起動したときに「起...

MysqlクエリJSON結果に関連する関数の概要

JSON 形式のフィールドは、MySQL 5.7 で追加された新しい属性ですが、基本的には文字列とし...

React の国際化 react-intl の使用

React で国際化を実現するにはどうすればよいでしょうか? react-intlプラグインは、Re...

複数のフィールドを変更するためのMysql更新の構文の詳細な分析

MySQL でレコードを更新すると、構文は正しいのですが、レコードが更新されません...質問文実行前...

Vuex全体のケースの詳細な説明

目次1. はじめに2. 利点3. 使用手順1. Vuexをインストールする2. Vuexを参照する3...

Linux の一般的なテキスト処理コマンドと vim テキストエディタ

今日は、いくつかの一般的なテキスト処理コマンドとvimテキストエディタを紹介します。 3日目 - 一...

Linux lseek関数の使い方の詳しい説明

注:記事に誤りがある場合は、メッセージを残して指摘してください。ご協力ありがとうございます。名前名前...

CSS でフロートとマージンを混合するサンプルコード

最近の勉強で、GitHub でレイアウトの練習をいくつか見つけたのですが、レイアウトにまったく慣れて...