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

推薦する

MySQL Binlog ログの読み取り時によくある 3 つのエラー

1. mysqlbinlog: [エラー] 不明な変数 'default-character...

MySQL MVCCメカニズム原理の詳細な説明

目次MVCCとはMySQL ロックとトランザクション分離レベルMySQL 元に戻すログMVCCの実装...

MySQL での重複キー更新時の replace into と insert into の使用法と相違点の分析

この記事では、MySQL での重複キー更新時の replace into と insert into...

効率化に役立つ 20 の CSS コーディングのヒント (並べ替え)

この記事では、主要な CSS ウェブサイトで推奨されている 20 個の便利なルールとベスト プラクテ...

JavaScript における call、apply、bind の実装原則の詳細な説明

目次序文電話使用法成し遂げるシンプルな実装バージョン:アップグレード版:適用する使用法成し遂げるバイ...

Ubuntu での MySQL および MySQL Workbench のインストール チュートリアル

Ubuntu に jdk をインストールする: [リンク] UbuntuにEclipseをインストー...

Docker は Python Flask+ nginx+uwsgi コンテナを構築します

Nginxをインストールするまずcentosイメージをプルしますdocker pull centos...

2013年のウェブデザインUIの最もホットなトレンド最も人気のあるUIデザイン

時は経つのが早く、わずか 6 日後には 2013 年が歴史になります。今年は、いわゆるトレンドが多す...

Tomcat で複数の war パッケージを展開する方法と手順

1 背景JDK1.8-u181とTomcat8.5.53がインストールされました。インストール後、環...

スーパーバイザーウォッチドッグの使い方を3分で学ぶ

ソフトウェアとハ​​ードウェア環境centos7.6.1810 64ビット cat /etc/red...

JavaScriptプロトタイプチェーンの詳細な説明

目次1. コンストラクタとインスタンス2. プロパティプロトタイプ3. プロパティ __proto_...

VUEは底部吸引ボタンを実装

この記事では、VUEの具体的なコードを共有して、下部吸引ボタンを実装する例を紹介します。具体的な内容...

Vueパンくずコンポーネントのカプセル化方法

Vueはパンくずコンポーネントをカプセル化して参照します。具体的な内容は次のとおりです。効果を達成す...

Linux でのマルチスレッドプログラミング例の分析

1 はじめにスレッド技術は 1960 年代にすでに提案されていましたが、マルチスレッドがオペレーティ...

JavaScriptを使用して独自のAjax関数を定義する

ネイティブJSによって開始されたネットワークリクエストは、クエリ文字列の形でサーバーに送信されるため...