GNU/Linux >> Linux の 問題 >  >> Panels >> Docker

DockerファイルとDocker作成:違いは何ですか?

多くの人がDockerfileとComposeファイルの間で混乱するのを見てきました。これは主に、技術的には正しくありませんが、両方がDockerイメージをある意味で変更するために使用されるためです。

2つの用語を混同するのは簡単ですが、同僚や(潜在的な)雇用主と会話するときは、その違いを理解する必要もあります。

Dockerfileは、コンテナーイメージを作成するために使用されるものであり、Composeファイルは、そのイメージのインスタンスをコンテナーとしてデプロイするために使用されるものです。

DockerComposeとDockerfileの違いを正しく理解できるように少し詳しく説明します。

Dockerfileとは何ですか?

Dockerfileをコンテナイメージの前身と呼ぶのが好きです。 Dockerfileからイメージを作成します。一般的なDockerfileには、特別なビルド命令、RUNなどのコマンドが含まれています 、ADDCOPYENTRYPOINT 、など。

以下の例を見てください:

FROM alpine:latest

RUN apk add --no-cache fortune

ENTRYPOINT ["fortune"]

各行は、ビルドコンポーネントの命令で始まります。これらの指示は、必ずしも大文字で書く必要はありません。以下は前のものと同じように有効です。

from alpine:latest

run apk add --no-cache fortune

entrypoint ["fortune"]

このDockerfileから、コンテナーイメージ(またはDockerイメージ)を構築できるようになりました。イメージは、複数の読み取り専用レイヤーで構成される、実行中のコンテナーの単なるテンプレートです。これはコンテナ画像に関する記事ではないので、そのトピックについて過度に説明することは控えます。

Docker CLIを使用して、このDockerfileからイメージをビルドするには、次のコマンドを実行します

docker build -t fortune:alpine .

これにより、fortune:alpineというタグの付いた画像が作成されます 。この画像からコンテナを作成するつもりはありません。それは次のセクションです。

作成ファイルとは何ですか?

作成ファイルは、次の2種類のデプロイで使用されます。docker-composeを使用した非クラスターデプロイメント docker swarmを使用したクラスター展開 。

2つのタイプを区別するために、クラスター展開を担当する作成ファイルをスタックファイルとして扱います。スタックファイルについては後で説明します。

作成ファイルは、docker-composeと呼ばれるツールの一部です。 。これは、dockerのような、dockerデーモンサーバーへのクライアントアプリケーションです。 CLIクライアントですが、run全体を入力する代わりに docker-composeを使用して毎回コマンドを実行します 同じYAMLファイルを何度も再利用し、最初に行ったのと同じ構成で同じコンテナーをデプロイできます。

それは、より読みやすく、より保守しやすく、より直感的です。 1つの作成ファイルに複数のコンテナーデプロイメント構成を含めることができます。

作成ファイルのサポートは、コマンドライン引数「dockercompose」としてGoで記述されたデフォルトのDockerクライアントの一部になります。そこにハイフンがないことに注意してください。これはまだ実験段階であるため、Pythonバージョンを使用した本番環境では、docker-composeを使用することをお勧めします。

前のイメージを取得し、作成ファイルを使用してそのインスタンスをデプロイしましょう。

version: "3.3"

services:
    fortune:
        image: "fortune:alpine"

ファイルをdocker-compose.ymlとして保存します 。次のコマンドを同じディレクトリで実行します

docker-compose up

する必要はありません ファイルをdocker-compose.ymlとして保存します 、好きなように保存できますが、docker-compose.ymlでない場合は またはdocker-compose.yaml 、必ず-f [FILENAME]を使用してください オプション。

docker-compose -f docker-compose.yml up

待って、何が起こるか見てください。

fortuneを知るには つまり、面白いLinuxコマンドについてのこの記事を読んでください。

ターミナルを盛り上げる12の面白いLinuxコマンドここに、同僚や友人を楽しませるための無害で楽しいLinuxコマンドがいくつかあります。役に立たないように見えるかもしれませんが、それでも楽しいです。 それはFOSSCommunityです

スタックファイルとは何ですか?

スタックファイルは、いくつかの例外を除いて、同様の構文とほとんどの内部オプションを備えた構成ファイルと同じです。スタックファイルは、スウォームクラスターにサービスのスタックをデプロイするために使用されます。

以前の作成ファイルをスタックファイルとして直接再利用できます。

まず、クラスターを初期化します。

docker swarm init

次に、次のようなコマンドを実行します

docker stack deploy -c docker-compose.yml fortune

このようにデプロイされた場合は、docker service logs ...を使用してサービスログを表示して出力を確認する必要があります。 。

まとめ

DockerfilesとComposeファイルは異なる目的を果たします。タイムラインを作成できれば、次のようになります

Dockerfile -> Docker Image -> Compose File -> Running Containers

初心者がこれらの2つのファイルと混同するもう1つの理由があります。 Dockerfileは、Composeファイルを介してポイントでき、docker-composeを使用できます。 イメージを構築します。

たとえば、以前の作成ファイルを書き直すことができるので

version: "3.3"

services:
    fortune:
        build:
            context: '.'
            dockerfile: "./Dockerfile"
        image: "fortune:alpine"

これで、docker-compose buildを実行できます イメージを構築します。または、docker-compose up --buildを実行することもできます コンテナを一度にビルドして実行します。

ここで、Dockerfileは作成ファイルを通過します。一見すると、イメージの作成を担当しているのは作成ファイルのように見えますが、そうではありません。

Docker Run vs Start vs Create:違いの説明docker初心者にとって、docker start、docker run、dockercreateなどの用語は混乱を招く可能性があります。この記事では、例との違いについて説明します。 LinuxハンドブックAbhishekPrakash

この記事で、DockerfileとComposeファイルの違いが明らかになったと思います。ご不明な点がございましたら、下のコメント欄でお知らせください。


Docker
  1. LinuxとUnix:違いは何ですか?

  2. Ubuntuサーバーとデスクトップ:違いは何ですか?

  3. LXC、LXD、Dockerコンテナの違いは何ですか

  1. Docker イメージ内のファイルを更新/追加する方法

  2. Linuxでの.bashrcファイルの目的は何ですか

  3. >、&>、>&、および 2&> を使用して出力をリダイレクトすることの違いは何ですか?

  1. ファイルへの書き込みとマップされたメモリへの書き込みの違いは何ですか?

  2. ELFファイル形式のセクションとセグメントの違いは何ですか

  3. fsync と syncfs の違いは何ですか?