Docker作曲、ボリューム、ネットワークとより多くを使う方法


写真でPhilippe Oursel on Unsplash

DockerパートIIIを簡素化する私の謙虚な努力

「私のマシンで働く」症候群の解決
これは、単純なDockerシリーズの最後の投稿です(あなたが前のものを読んでいないならば、先へ行って、彼らを読んでください)、それは後でより意味をなします —  part I & part II ). 今回はネットワーク、Dockerの作成、Dockerのボリュームなどをカバーします.

それはすべてのDockerの構成では何ですか?
Dockerの作成を定義し、マルチコンテナのDockerアプリケーションを実行することができます.作成すると、YAMLファイルを使用してアプリケーションのサービスを設定します.その後、1つだけのコマンドで作成されたすべてのサービスを開始できます.
次の例はTechWorld with Nana GITLAB .BTW、ナナのYouTubeチャンネルは非常にお勧めです.以下はDockerのチュートリアルです.
以下の例では、MongoDBコンテナをMongo Expressコンテナと一緒に実行します.前の記事で見たように、以下のような方法があります.
docker run -d -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=password --name mongodb mongo

docker run -d -p 8081:8081 -e ME_CONFIG_MONGODB_ADMINUSERNAME=admin -e ME_CONFIG_MONGODB_ADMINPASSWORD=password -e ME_CONFIG_MONGODB_SERVER=mongodb --name mongo-express mongo-express
等価のYAMLコンフィギュレーションバージョンは、クリーンで読みやすいです.
version: '3'
services:
  mongodb:
    image: mongo
    ports:
      - 27017:27017
    environment:
      - MONGO_INITDB_ROOT_USERNAME=admin
      - MONGO_INITDB_ROOT_PASSWORD=password
  mongo-express:
    image: mongo-express
    ports:
      - 8080:8081
    environment:
      - ME_CONFIG_MONGODB_ADMINUSERNAME=admin
      - ME_CONFIG_MONGODB_ADMINPASSWORD=password
      - ME_CONFIG_MONGODB_SERVER=mongodb
使用するには、単に実行しますdocker-compose -f filename.yaml up , 削除するには、引数を下に置き換えます.

音量を大きくする
https://medium.com/media/c461c2386ead3ec2b5ef9f5f2472e58b/href
各々のDockerは異なったファイルシステムを持っています.以前に見たように、コンテナを終了するとき、ほとんどのファイルが削除されますcommit コマンド)それで、あなたはファイルを保存するためにボリュームを使うことができます、あるいは、コンテナの範囲内で使われるためにあなたのローカルシステムのファイルを指すことができます.そのためには、次のように両方のファイルシステムを接続する必要があります.
docker run -v /path/in/host:/path/in/container -it image_name
上記のコマンドは/path/in/コンテナがローカルのファイルシステムの/path/in/hostにマップされるコンテナを実行します.別のオプションはユニークな名前付きボリュームを使用することです、そこで、Dockerがローカルファイルシステムの場所を設定し、ユーザーがコンテナの場所を次のように設定します.
docker run -v name:/path/in/container -it image_name
名前付きボリュームの情報を取得するには、コマンドを使用しますdocker volume inspect volume\_name を削除するには:docker volume rm volume\_name . 直接のフォローアップは、コンテナにコピーしてからどのようにコピーするかです(以前に見たコピーコマンドは答えではありません.以下のコマンドを使用してコンテナにコピーします.
docker cp <src_path> <container>:<dest_path>

* container - the ID or name of the container 
コンテナからコピーするには以下のようにします.
docker cp <container>:<src_path> <dest_path>

* container - the ID or name of the container

接続する
互いとコミュニケートするsrc
もう一つの重要な概念はネットワークです;いくつかのコンテナのネットワークを作成できます.デフォルトでは、dockerは各docker実行のために1つを作成します.それでも、いくつかの状況で、あなたはそれを名前にして、コンテナより多くのために同じネットワークをセットしたいです;したがって、彼らはお互いに通信することができます.
作成したネットワークがすべてコマンドを実行するのを確認するには、次のコマンドを実行します.
docker network ls
ネットワークを作成するには、次の手順に従います.
docker network create network_name
そして最後に、このネットワークでコンテナを発射します.
docker run --net network_name -it image_name
別の便利なコマンドは、コンテナ間の通信を可能にする別のコンテナのネットワークに基づいてコンテナを実行することです.私たちは今までのコンテナの通信方法を見ましたが、外部ソースからデータを共有したい場合はどうでしょうか?この場合、コンテナが待機する内部ポートを定義します.インdocker run -p 5050:80 image\_name コマンドは、ホスティングシステムポート5050がコンテナのポート80に接続されていることを規定する.

ドッカーイメージサイズダイエット
画像サイズを縮小する — 
ドッカー画像サイズはすぐに2、5、さらに15 GBに膨らませることができます.最善の練習は、2、3の理由でそれを減らすことです.
  • より小さいサイズは、場所から場所へより簡単に動くことを意味します
  • ローカルファイルシステムの空き領域
  • 通常、画像はクラウドリポジトリに格納されます.サイズが小さいほど、コストが下がる
  • セキュリティ — 必要なものだけをインストールする
  • それではどのようにイメージのサイズのダイエットを行うことができますか?
  • 同じdockerfile上で複数の意味の複数のイメージ(“from”)とビルドコマンドでビルドするものを定義します.そうするためには、各層に名前を付けることを強く勧めます.
    Dockerビルド — target = targetRange name - tコンテナ名です.
  • 小さなサイズの画像をベースに画像.などの配布を使用することができますalpine LinuxまたはGoogleのdistroless .

  • イメージ調査者
    このガイドを包む前に最後に、オープンソースユーティリティをDive . その多くの機能の中で、各レイヤのコンテンツ、ファイルサイズ、および詳細を探索することができます.基本的に、それはあなたがDocker画像を分析するのに役立ちます.結局、イメージサイズを減らす方法を考えるのに十分な情報を提供します.


    終わる
    このポストと前のものは、ちょうどDockerがすることができる氷山の先端です.私はそれを十分に簡素化することを望みます、そして、あなたがこれまでにそれをしたならば、あなたは始まるために基本的な技術がなければなりません.
    楽しむ!
    閉じるこの動画はお気に入りから削除されています.