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

さっそくコードを見てみましょう * { マージン: 0; パディング: 0; } 。容器 { マージ...

DockerでSpringbootプロジェクトを実行する方法

1. IDEAの下にあるターミナルをクリックし、mvn clean installと入力します。 次...

Mysql 自己結合クエリ例の詳細な説明

この記事では、Mysql の自己結合クエリについて説明します。ご参考までに、詳細は以下の通りです。自...

MySQL の制限使用法とページングクエリステートメントのパフォーマンス分析の詳細な説明

使用制限クエリ ステートメントを使用する場合、多くの場合、データの最初の数行または中間行を返す必要が...

テーブルタグ(テーブル)詳細

<br />テーブルは、昔から誰もが使ってきたタグで、今も使われています。しかし、現在の...

純粋な CSS3 でモバイルの拡大と縮小の効果を実装するためのサンプル コード

この記事では、純粋な CSS3 を使用してモバイル端末での展開と折りたたみの効果を実装するサンプルコ...

Vue データ内のプロパティをランダムに変更すると、ビューは更新されますか?

インタビュアー: Vue のソースコードを読んだことはありますか?応募者:あります。インタビュアー:...

Sqoop エクスポート マップ 100% 削減 0% さまざまな理由と解決策でスタック

私はこのようなバグを典型的な「ハムレット」バグと呼んでいます。これは、「エラーメッセージは同じだが、...

JavaScriptがDOMツリーの構築にどのように影響するかについて詳しく説明します。

目次ドキュメント オブジェクト モデル (DOM) DOM と JavaScript DOMツリーの...

AngularとIonicのライフサイクルとフック関数を素早く理解するための記事

目次角度成し遂げる呼び出し順序知らせイオニックionic はページのライフサイクルをどのように処理し...

MySQLソートにおけるCASE WHENの使用例

序文以前のプロジェクトでは、SQL の CASE WHEN ソート関数が使用されました。ではブログメ...

Linux での Nginx 監視の問題

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

MySQL 5.7.24 のインストールと設定方法のグラフィックチュートリアル

MySQL は最も人気のあるリレーショナル データベース管理システムです。WEB アプリケーションに...

純粋なテキストとアイコン付きのボタンを実現するための HTML+CSS

この記事では、いくつかの基本的なページ要素の実装方法をまとめており、後で更新される予定です。まず、私...

コードレイン効果を実現するJavaScriptキャンバス

この記事では、コードレイン効果を実現するためのキャンバスの具体的なコードを参考までに共有します。具体...