Docker 構成コンテナの場所とヒントのまとめ

Docker 構成コンテナの場所とヒントのまとめ

Docker の使用に関するヒント

1. 停止したDockerコンテナをすべてクリーンアップする

停止したコンテナや強制終了エラーで使用できないコンテナが多数ある場合、それらを削除する必要がありますが、1つずつ削除するのは面倒です。コンテナの数だけrmを実行する必要があります。docker ps -qaですべてのコンテナのIDを調べて、一度にすべて削除できます。実行中のコンテナを削除する心配はありません。rmでは実行中のコンテナを削除できません。この方法で、停止しているコンテナを一度にすべて削除できます。

# Linux環境にのみ適用可能 docker rm $(docker ps -qa)

2. イメージ内の環境変数を表示する

イメージを作成したり取得したりするときに、その環境変数を知りたい場合、まずコンテナを作成してそれを確認することを考えます。実際、そうする必要はありません。envを通じて直接確認することができます。

docker で nginx env を実行する

3. WindowsとLinuxの違い

これら 2 つの環境の違いの主な理由は、Docker のサポートの問題です。Docker は最初に Linux でリリースされ、Linux カーネルに依存していることは誰もが知っていますが、Windows では利用できません。では、現在どのように使用するのでしょうか。仮想マシンです。Win10 未満のバージョンであれば、基本的に VirtualBox でインストールされます。多くの Win10 ユーザーはデスクトップ バージョンを選択し、仮想マシンの一種である Hyper-V を使用します。 Docker は、仮想マシンが利用可能になった後にのみ Windows で使用できます。ここでは、2 つの違いを知っておく必要があります。

Linux では、Docker は Linux システム上に直接存在しますが、Windows では異なります。Windows システムは仮想マシンであり、Docker は仮想マシン上にあります。

Linux システム<< Docker コンテナ

Windows システム << 仮想マシン << Docker コンテナ

これが、使用方法が少し異なる理由です。最も一般的なのは、ポートを開くときです。

Linux システム: Docker コンテナ ポートは Linux システムに直接マッピングされます

Windowsシステム: Dockerコンテナポートは仮想マシンにマッピングされ、その後仮想マシンによってWindowsにマッピングされます。

注: 仮想マシンでネットワークを選択するときは、ネットワーク アドレス変換 (NAT) を選択してください。そうすれば、中間の仮想マシンから Windows レイヤーへのポート マッピングの問題を心配する必要がなくなります。

4. マウント

Docker を使用する場合、多くの人はイメージを作成し、アプリケーションを直接イメージにパッケージ化して、イメージを直接起動することを好みます。すべては問題ありませんが、時には構成ファイルや一部のプロジェクトでの小さな変更など、いくつかの小さな変更を加えることは避けられません。このとき、新しいイメージを作成する必要がありますか?答えはノーです。必要はありません

フロントエンドでは nginx イメージのデプロイを使用していますが、公開後に微調整が必​​要なスタイルがあることがわかりました。イメージを作り直す必要がありますか? これは面倒でしょうか (少なくとも私にとっては面倒です)。考えてみてください。コンテナ内のファイルを変更されたファイルで上書きするだけです。コンテナ内のファイルを変更されたファイルで直接上書きするにはどうすればよいでしょうか? 方法は 2 つあります。1 つ目は、ファイルを直接コンテナに cp することです。このプロセスでは、コンテナを操作する必要があります。コンテナを移動しないようにするにはどうすればよいでしょうか?マウントコンテナを起動するときに、後で変更するものをホストに直接マウントできるので、コンテナを移動する必要はありません。起動時にホストファイルまたはディレクトリをコンテナにマウントするには、-vパラメータを使用します。

docker run -d -p 80:80 -v /c/Users/SunArmy/Desktop/html:/usr/share/nginx/html nginx 

index.htmlを書いて、そこに welcome nginx と書いてみましょう

このファイルを/opt/docker/html/のindex.htmlで上書きします。

再訪

再起動する必要はありません。OKをクリックするだけです。

コンテナに直接cpを選択しないのはなぜですか?

設定ファイルを修正する必要がある場合、再起動する必要がありますが、修正時に誤って間違った設定ファイルを書き込むと、コンテナが起動できなくなり、コンテナ内の設定を変更できなくなります(コンテナを再作成しない限り)。つまり、設定ファイルを外部にマウントしておけば、起動できない場合は、ホスト上で正しい設定に直接修正して再起動することができます。まとめると、コンテナへの cp 方式よりもマウント方式の方が便利で安全です。

1. jqツール

最後に、jsonを操作するためのツールを紹介します。これはコンテナの設定を表示するときに使用します。コンテナの設定を表示するにはdockerinspectIDを使用しますが、これにより、興味のある情報がフィルタリングされることがよくあります。通常はdockerinspect --format=を選択するか、grepを使用します。

しかし、どちらを使用しても、私たちが最もよく知っている json 操作方法ほど優れているわけではありません。

jqツールは別途インストールする必要がありますyum install jq

jqを使用してdockerinspectをフィルタリングし、アドレスを取得します。

docker 検査 ac |jq -r .[0].NetworkSettings.IPAddress

. はパイプラインの前の出力を表し、その後の [0] は配列の最初の要素を表します。その後の . はオブジェクト内の属性を指し示すのと似ており、これは通常 json を使用する場合と同じです。jq は json ファイルを便利にフォーマットして表示することもできるため、コマンドラインで json ファイルを表示するのに最適なツールです。

2. Dockerローカルイメージとコンテナの保存場所を変更する

多くの人はコンテナが作成されたことは知っているものの、作成されたコンテナがどこにあるかについては注意を払っていません。ローカルミラーはどこにありますか?

ただし、注意を払う必要がある場合、多くの場合、Docker イメージとコンテナーによってディスクがいっぱいになっていることが原因です。

Docker イメージとコンテナが保存されている場所を表示する

docker 情報 | greo Docker

デフォルトの場所は次のとおりです: /var/lib/docker

保存場所を変更するには、次の 2 つの方法があります。

1): ソフトリンクを確立して/var/lib/dockerを別の場所に移動し、ここにソフトリンクを確立します

# Dockerを停止する
 サービス docker 停止
# /var/lib/docker を /usr/local/ に移動する
 mv /var/lib/docker /usr/local/
# ソフト接続を作成する ln -s /usr/local/docker /var/lib/docker
# Dockerを起動する
 サービスdocker開始

この時点では修正は済んでいるが、場所を確認すると、/var/lib/dockerが残っている。

しかし、これはリンクです。サイズを確認すると空であることがわかります。実際の保存場所は/usr/local/dockerになっています

# /var/lib/docker ディレクトリのサイズを表示します du -dh /var/lib/docker

2): 設定ファイルを変更する

デフォルトの設定ファイルは/etc/docker/daemon.jsonです。

そうでない場合は、自分で作成してください

{
 "レジストリミラー": ["http://hub-mirror.c.163.com"],
 "グラフ":"/opt/docker"
}

グラフの値を自分の場所に合わせて変更し、再起動するだけです。

起動する

サービス docker 停止

停止

サービスdocker開始

再起動

サービスdockerの再起動

dockerの保存場所を再度確認すると、正常に変更されています

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。

以下もご興味があるかもしれません:
  • Docker構成 Alibaba Cloud Container Serviceの操作
  • Dockerコンテナのネットワークポート設定プロセスの詳細な説明
  • Docker コンテナのネットワーク設定によく使われるコマンドの詳しい説明
  • Windows 7 環境での Docker 高速ビルドと Alibaba Cloud コンテナ高速化構成の詳細な説明
  • Dockerコンテナ内の設定ファイルの変更の実装
  • nginxはdockerコンテナ内に設定ファイルを自動的に生成します
  • Dockerは起動されていないコンテナの設定情報を変更します

<<:  Vueのフィルターとディレクティブの詳細な説明

>>:  Mac で MySQL バージョン 5.6 のパスワードを設定する方法

推薦する

トピックページデザインの 5 つの基本スキル (Alibaba UED Shanmu)

このトピックは、2012 年後半の社内共有です。まだ記事にはなっていませんが、春節が近づいているので...

Linux での Nginx 監視の問題

nginxのインストール仮想マシンがインターネットにアクセスできることを確認します。 1. ルートユ...

Linux 論理ボリューム管理 (LVM) の使用法の概要

ディスク領域の管理は、システム管理者にとって重要な日常的なタスクです。ディスク領域が使い果たされると...

MySQL インデックス データ構造の詳細な分析

目次概要インデックスデータ構造バイナリツリー赤黒木BツリーB+ツリーハッシュ索引InnoDB インデ...

MySQL インデックスに関するヒントのまとめ

目次1. インデックスの基礎知識1.1 インデックスの利点1.2 インデックスの有用性1.3 インデ...

CSSアニメーションとSVGを組み合わせてエネルギーの流れの効果を作成する

最終的な効果は次のようになります。アニメーションは2つのステップに分かれていますランニング軌道を開発...

Dockerfileを使用してDockerイメージを構築する手順

Dockerfile は、命令を含むテキスト ファイルです。各命令はレイヤーを構築するため、各命令の...

Navicatを使ってMySQLを操作する方法

目次序文: 1. Navicatの紹介2. シンプルなチュートリアルの共有接続管理ライブラリテーブル...

Vueタイマーの実装方法

この記事では、参考までにタイマーを実装するためのVueの具体的なコードを紹介します。具体的な内容は次...

vue3.0+vant3.0の迅速なプロジェクト構築の実装

目次1. プロジェクトの構築2. Vue3 体験 + Vant 紹介2020年9月18日にvue.j...

Vue のグローバル ウォーターマーク実装例

目次1. 透かしのJsファイルを作成する2. 導入操作2.1 App.vueや他のページでの参照2....

HTMLの基礎を徹底解説(第1部)

1. WEBを理解するWeb ページは主にテキスト、画像、ハイパーリンクなどの要素で構成されていま...

一般的なMysql DDL操作の概要

図書館管理ライブラリを作成する データベースを作成します [存在しない場合] ライブラリ名;ライブラ...

jsはシンプルなショッピングカートモジュールを実装します

この記事の例では、参考までに、シンプルなショッピングカートモジュールを実装するためのjsの具体的なコ...

MySQLデータベースをアンインストールするための完全な手順

MySQLデータベースを完全にアンインストールするプロセスは次のとおりです。 1. MySQLサービ...