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 のパスワードを設定する方法

推薦する

CSSクラス名の問題の詳細な説明

数字で始まる次の CSS クラス名は有効になりません。 .1番目{ 色: 赤; }有効な CSS ク...

Kali Linux Vmware 仮想マシンのインストール (図とテキスト)

準備: 1. VMwareワークステーションソフトウェアをインストールする2. Kali Linux...

React Native JSIはRNとネイティブ通信のサンプルコードを実装します

目次JSIとはJSIの違いiOS で JSI を使用するiOS 設定RN側の構成jsはパラメータ付き...

完璧なアロエベラジェルを選ぶには?完璧なアロエベラジェルの本物と偽物の見分け方

最新のパーフェクト アロエ ベラ ジェルのパッケージ ボックスには、赤いフォントで完璧な英語の文字が...

Vueはシンプルな画像切り替え効果を実装します

この記事では、Vueの具体的なコード例を参考までに紹介します。具体的な内容は以下のとおりです。 コー...

リモートログインとポート公開を防ぐためのLinuxサーバー構成IPホワイトリスト

序文ブロガーが使用しているサーバーは Alibaba Cloud から購入したものです。実際、Ali...

MySQL 8.0.12 のインストールと設定のチュートリアル

この記事はMySQL 8.0.12のインストールと設定に関する詳細なチュートリアルを記録しています。...

ローカルストレージにブール型の値を保存する際の落とし穴を解決する

LocalStorageはブール値を保存します今日、ブール値データを保存するために localsto...

JavaScript 関数型プログラミングの基礎

目次1. はじめに2. 関数型プログラミングとは何ですか? 3. 純粋関数(関数型プログラミングの基...

crontab の実行結果を電子メールでユーザーに通知する方法

症状Centos7 ホストに crontab タスクを設定しましたが、時間が来るとメールを実行して「...

js+ca​​nvas でコードレイン効果を実現

この記事では、js+ca​​nvasコードの雨効果の具体的なコードを参考までに共有します。具体的な内...

JavaScriptでよく使われる配列重複排除実戦ソースコード

アレイの重複排除は、通常、就職面接中に遭遇し、アレイの重複排除方法のコードを手動で記述することが求め...

CSS3 フィルター (フィルタ) ウェブページのグレーまたは黒モードのサンプルコードを実現

フロントエンドcss3 フィルターは、Web ページのグレー効果を実現できるだけでなく、ナイト モー...

Nginx 500 内部サーバーエラーの解決方法

今日、Nginxを使っていたら500エラーが発生しました。エラーコードを検索してみんなに共有しました...

CSS のインライン スタイルに変換するソリューション (css-inline)

シーンについて話すメールを送信サードパーティのウェブサイトにHTMLを埋め込む他の編集者の記事をコピ...