Docker Composeを初めて使用し、さまざまなチュートリアルに従って学習する場合は、docker-compose up、docker-compose up -d、docker-compose stop、docker-compose down、さらにはdockerなどの用語に出くわす可能性があります。 -停止を作成します。
これらの用語は、Dockerの初心者を混乱させるのに十分です。これは、これらのdocker-composeコマンドの多くが非常によく似た方法で動作するように見えるためです。
実際、最初は docker-compose up
の違いをすぐに見分けるのは特に難しい場合があります。 およびdocker-composestart
。
Docker Composeを介してコンテナーを起動することは、upコマンドを実行することと同じではありませんか?正確ではありません。
すべてを詳しく説明させてください。
Dockerの違いComposeup、up -d、stop、start、down、down -v
>これらのコマンドの機能:
Docker作成コマンド Webアプリサービスをデプロイし、Dockerイメージから新しいコンテナーを作成し、ネットワーク、ボリューム、およびDockerComposeファイル内で指定されたすべての構成をセットアップします。 -d
を指定する場合 、これは、端末の制御を提供することにより、バックグラウンドで実行されるように、デタッチモードで実行するように指示することを意味します(以下のいくつかの例ですぐに説明します)。
Docker作成停止コマンド DockerCompose構成に関連付けられているすべてのサービスを停止します。コンテナまたは関連する内部ボリュームまたはネットワークは削除されません。
Docker作成開始コマンド 同じDockerComposeファイルに基づいて停止した構成で指定されたとおりに停止したサービスを開始します。
Docker作成コマンド DockerCompose構成に関連付けられているすべてのサービスを停止します。 stopとは異なり、サービスに関連付けられているコンテナと内部ネットワークもすべて削除されます。ただし、内部で指定されたボリュームではありません。これを行うには、さらに -v
を指定する必要があります down
の後にフラグを立てる コマンド。
これは、Dockerの実行と開始コマンドに似ていますよね?
Docker Run vs Start vs Create:違いの説明docker初心者にとって、docker start、docker run、dockercreateなどの用語は混乱を招く可能性があります。この記事では、例との違いについて説明します。 LinuxハンドブックAbhishekPrakash十分な理論ですが、ここでいくつかの実践的な例を見てみましょう。
例に従う場合は、DockerとDockerComposeインストーラーが既に存在することを確認してください。
Linuxサーバーで実行されているDockerComposeベースのGhostブログセットアップを使用しているとしましょう。
すべてのセルフホストチュートリアルでは、ほとんどの場合 -d
を使用する傾向があります サーバーに構成をデプロイするたびにフラグを立てます。しかし、指定しないとどうなりますか?
[email protected]:~/ghost$ docker-compose up
Pulling ghost (ghost:4.20.3)...
4.20.3: Pulling from library/ghost
b380bbd43752: Pull complete
8d36a6ce056a: Pull complete
f75fe68b8e22: Pull complete
44f6d143e12f: Pull complete
0ebe8063dedd: Pull complete
f984e0e37c5a: Pull complete
ce2320facea8: Pull complete
898c3dbc1716: Pull complete
45c37559f24a: Pull complete
Digest: sha256:b332684117bfa05329298712ad0ffcfc4a83ce6314332e073978f46be3c05e81
Status: Downloaded newer image for ghost:4.20.3
Creating ghost_ghost_1 ... done
Attaching to ghost_ghost_1
ghost_1 | [2021-10-26 07:02:05] INFO Ghost is running in production...
ghost_1 | [2021-10-26 07:02:05] INFO Your site is now available on https://ghost.domain.com/
ghost_1 | [2021-10-26 07:02:05] INFO Ctrl+C to shut down
ghost_1 | [2021-10-26 07:02:05] INFO Ghost server started in 0.369s
ghost_1 | [2021-10-26 07:02:06] WARN Database state requires initialisation.
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: posts
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: posts_meta
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: users
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: oauth
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: posts_authors
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: roles
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: roles_users
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: permissions
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: permissions_users
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: permissions_roles
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: settings
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: tags
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: posts_tags
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: invites
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: brute
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: sessions
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: integrations
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: webhooks
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: api_keys
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: mobiledoc_revisions
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: members
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: products
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: offers
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: benefits
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: products_benefits
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: members_products
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: members_payment_events
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: members_login_events
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: members_email_change_events
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: members_status_events
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: members_product_events
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: members_paid_subscription_events
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: labels
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: members_labels
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: members_stripe_customers
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: members_stripe_customers_subscriptions
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: offer_redemptions
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: members_subscribe_events
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: stripe_products
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: stripe_prices
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: actions
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: emails
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: email_batches
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: email_recipients
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: tokens
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: snippets
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: temp_member_analytic_events
ghost_1 | [2021-10-26 07:02:06] INFO Creating table: custom_theme_settings
ghost_1 | [2021-10-26 07:02:06] INFO Model: Product
ghost_1 | [2021-10-26 07:02:06] INFO Model: Tag
ghost_1 | [2021-10-26 07:02:06] INFO Model: Role
ghost_1 | [2021-10-26 07:02:06] INFO Model: Permission
ghost_1 | [2021-10-26 07:02:07] INFO Model: User
ghost_1 | [2021-10-26 07:02:07] INFO Model: Post
ghost_1 | [2021-10-26 07:02:08] INFO Model: Integration
ghost_1 | [2021-10-26 07:02:08] INFO Relation: Role to Permission
ghost_1 | [2021-10-26 07:02:08] INFO Relation: Post to Tag
ghost_1 | [2021-10-26 07:02:08] INFO Relation: User to Role
ghost_1 | [2021-10-26 07:02:08] INFO Database is in a ready state.
ghost_1 | [2021-10-26 07:02:08] INFO Ghost database ready in 3.309s
ghost_1 | [2021-10-26 07:02:09] INFO Ghost booted in 4.457s
ghost_1 | [2021-10-26 07:02:09] INFO Adding offloaded job to the queue
ghost_1 | [2021-10-26 07:02:09] INFO Scheduling job update-check at 49 27 22 * * *. Next run on: Tue Oct 26 2021 22:27:49 GMT+0000 (Coordinated Universal Time)
ghost_1 | [2021-10-26 07:02:51] INFO "GET /favicon.ico" 200 7ms
ghost_1 | [2021-10-26 07:02:51] INFO "GET /" 200 605ms
ghost_1 | [2021-10-26 07:02:51] INFO "GET /assets/built/screen.css?v=dde6c321bb" 200 5ms
ghost_1 | [2021-10-26 07:02:51] INFO "GET /assets/built/casper.js?v=dde6c321bb" 200 3ms
ghost_1 | [2021-10-26 07:02:52] INFO "GET /members/api/member/" 204 1ms
ghost_1 | [2021-10-26 07:02:52] INFO "GET /members/api/site/" 200 14ms
ghost_1 | [2021-10-26 07:02:52] INFO "GET /favicon.ico" 200 2ms
ご覧のように? -d
なし オプションで、設定を起動しますが、ターミナルプロンプトに戻らずに詳細モードで実行されます。ちょっと助かりましたね。ブラウザを開いてゴーストブログにアクセスすると、すぐにアクセスできるようになります。しかし、Ctrl +Zでコンソールからドロップアウトした場合はどうなりますか?プロセスはバックグラウンドで実行され続け、dockerpsコマンドを使用して確認できます。 :
[email protected]:~/ghost$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
563a45d049cf ghost:4.20.3 "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 2368/tcp ghost_ghost_1
しかし、代わりにCtrl + Cを使用した場合、コンテナーはどうなりますか?プロセスはすぐに殺されます。
[email protected]:~/ghost$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
-d
を使用する場合 オプションは、Ctrl + Zと非常によく似ています。コンソールから切り離され、コンテナをバックグラウンドで実行し続け、新しいコンテナ名( ghost_ghost_1
)も出力します。 この場合)。
これで、 docker-compose down
を使用する代わりに 、 docker-compose stop
を使用しましょう :
[email protected]:~/ghost$ docker-compose stop
[email protected]:~/ghost$
実行中のコンテナを確認してみましょう。予想通り、何もないはずです:
[email protected]:~/ghost$ docker-compose ps
Name Command State Ports
---------------------------------------------------------------
ghost_ghost_1 docker-entrypoint.sh node ... Exit 0
docker ps
を使用しなかったことに注意してください 。代わりに、 docker-compose ps
を実行しました Exit 0
を確認する別の方法を紹介したかったので 州。これは、コンテナが終了/停止したことを意味します。
docker ps -a
でこれを再確認しましょう 。 -a
フラグは停止したコンテナも検索します:
[email protected]:~/ghost$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
44d09e778a91 ghost:4.20.3 "docker-entrypoint.s…" 8 minutes ago Exited (0) 7 minutes ago ghost_ghost_1
docker-compose start
とは それなら?
Docker Compose Startは、 docker-compose down
を使用してコンテナーを削除していない場合にのみ意味があります。 (このチュートリアルのコマンドラインではまだ実行していません)。つまり、基本的に、ここでの違いは、停止されて削除されていないコンテナを起動することです。
それでは、まず、 start
を使用しましょう up
の代わりに 今、何が起こるか見てみましょう:
[email protected]:~/ghost$ docker-compose start
Starting ghost ... done
[email protected]:~/ghost$
ここで何が起こるかというと、停止したコンテナが再び開始されます:
[email protected]:~/ghost$ docker-compose ps
Name Command State Ports
-----------------------------------------------------------------
ghost_ghost_1 docker-entrypoint.sh node ... Up 2368/tcp
どうぞ。状態はUp
になりました Exit 0
から戻る 。 docker
で再確認することもできます コマンドのバージョン:
[email protected]:~/ghost$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
44d09e778a91 ghost:4.20.3 "docker-entrypoint.s…" 22 minutes ago Up About a minute 2368/tcp ghost_ghost_1
stop
を実行してみましょう もう一度コマンドします。
[email protected]:~/ghost$ docker-compose stop
Stopping ghost_ghost_1 ... done
これで、コンテナの状態がわかりました。 up
のいずれかを使用できます またはstart
コマンドを実行して、再度実行します。 down
を実行できることに注意してください この状態でも、サービスを再開せずに:
[email protected]:~/ghost$ docker-compose down
Removing ghost_ghost_1 ... done
Network net is external, skipping
これでコンテナが削除されました。 Docker Composeファイル内に内部ネットワークが指定されている場合、それらも削除されます。 net
以降 外部の場合、削除はスキップされます。 -v
を指定しましたか さらにフラグを立てると、それも削除されます!
[email protected]:~/ghost$ docker-compose down -v
Stopping ghost_ghost_1 ... done
Removing ghost_ghost_1 ... done
Network net is external, skipping
Volume ghost is external, skipping
データには常に二重の注意を払ってください!
ボーナスのヒント:外部ボリューム(以前に「dockervolume create volume-name」で作成)を使用しているため、「-v」を使用しても削除されないことに注意してください。これは、DockerCompose仕様から作成されたボリュームのみを対象としています。ただし、逆に、「docker volume prune」は、コンテナーで使用されている場合でも外部ボリュームを削除します。Dockerコンテナーのバックアップと復元に関する決定的なガイドクラウドとローカルシステムの両方を利用して、Dockerコンテナーをバックアップおよび復元します。 LinuxハンドブックAvimanyuBandyopadhyay
また、 start
は使用できません この段階では。 stop
でのみ機能します ped構成:
[email protected]:~/ghost$ docker-compose start
Starting ghost ... failed
ERROR: No containers to start
このような場合は、 docker-compose up
を使用する必要があります またはdocker-composeup -d
もう一度。
[email protected]:~/ghost$ docker-compose up -d
Creating ghost_ghost_1 ... done
[email protected]:~/ghost$
概要
この記事がup
についての理解を深めてくれることを願っています vs up -d
vs start
stop
も同様です vsダウンコード> および
down-v
DockerComposeの場合。
この広範な説明ガイドにより、日常のDocker管理がはるかに簡単になり、今後の負担が大幅に軽減されます。シナリオごとに、特に実稼働システムでは、状況を整理するためにどの特定のコマンドを選択するかは、もちろん、実装方法が異なります。
共有する考え、質問、提案があれば、下にコメントを残してください。