Jika Anda baru mengenal Docker Compose dan mempelajarinya dengan mengikuti berbagai tutorial, Anda mungkin menemukan istilah seperti docker-compose up, docker-compose up -d, docker-compose stop, docker-compose down, atau bahkan docker -compose stop.
Istilah-istilah ini cukup membingungkan seorang pemula buruh pelabuhan karena banyak dari perintah penulisan buruh pelabuhan ini tampaknya berperilaku dengan cara yang sangat mirip.
Faktanya, pada awalnya akan sangat sulit untuk langsung membedakan antara docker-compose up
dan docker-compose start
.
Bukankah memulai wadah melalui Docker Compose sama dengan menjalankan perintah up? Tidak persis.
Biarkan saya menjelaskan semuanya kepada Anda secara detail.
Perbedaan antara Docker Compose up, up -d, stop, start, down dan down -v
Apa yang dilakukan perintah ini:
Perintah Penulisan Docker menyebarkan layanan aplikasi web dan membuat wadah baru baru dari gambar buruh pelabuhan bersama dengan pengaturan jaringan, volume, dan setiap konfigurasi yang ditentukan dalam file Tulis Docker. Saat Anda menentukan -d
, itu berarti Anda memerintahkannya untuk menjalankannya dalam mode terpisah sehingga berjalan di latar belakang dengan memberi Anda kendali terminal (dibahas sebentar lagi melalui beberapa contoh di bawah).
Perintah berhenti Tulis Docker menghentikan semua layanan yang terkait dengan konfigurasi Docker Compose. Itu TIDAK menghapus wadah apa pun atau volume atau jaringan internal terkait.
Perintah mulai Tulis Docker akan memulai semua layanan yang dihentikan seperti yang ditentukan pada konfigurasi yang dihentikan berdasarkan pada file Docker Compose yang sama.
Perintah Tulis Docker menghentikan semua layanan yang terkait dengan konfigurasi Docker Compose. Tidak seperti stop, itu juga menghapus semua wadah dan jaringan internal yang terkait dengan layanan. Tapi BUKAN volume yang ditentukan secara internal. Untuk melakukannya juga, Anda perlu menentukan tambahan -v
tandai setelah down
perintah.
Ini terdengar mirip dengan perintah Docker run vs start, bukan?
Docker Run vs Start vs Create:Perbedaan Dijelaskan Untuk pemula docker, istilah seperti docker start, docker run, dan docker create bisa membingungkan. Artikel ini menjelaskan perbedaannya dengan contoh. Buku Pegangan LinuxAbhishek PrakashCukup teori, mari kita lihat beberapa contoh langsung sekarang.
Memahami perbedaan dengan contoh langsung
Jika Anda ingin mengikuti contoh, pastikan Anda sudah memiliki penginstal Docker dan Docker Compose.
Katakanlah Anda menggunakan pengaturan blog Ghost berbasis Docker Compose yang berjalan di server Linux Anda.
Dalam semua tutorial self-host kami, saya kebanyakan cenderung menggunakan -d
tandai setiap kali kami menerapkan konfigurasi kami di server kami. Tetapi bagaimana jika Anda tidak menentukannya?
[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
Jadi kamu melihat? Tanpa -d
opsi, Anda meluncurkan konfigurasi Anda, tetapi itu terjadi dalam mode verbose tanpa kembali ke terminal Prompt. Agak membantu, bukan? Saat Anda membuka browser dan mengakses blog hantu, Anda akan menemukannya dapat diakses dalam beberapa saat. Tetapi bagaimana jika Anda keluar dari konsol dengan Ctrl+Z? Ini akan membuat proses tetap berjalan di latar belakang, dan Anda dapat memeriksanya menggunakan perintah docker ps :
[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
Tetapi apa yang terjadi pada wadah jika Anda menggunakan Ctrl+C? Prosesnya langsung terhenti.
[email protected]:~/ghost$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Saat Anda menggunakan -d
opsi, apa yang dilakukannya sangat mirip dengan Ctrl+Z:Ini terlepas dari konsol dan terus menjalankan wadah di latar belakang dan juga mencetak nama wadah baru (ghost_ghost_1
dalam hal ini).
Sekarang, daripada menggunakan docker-compose down
, mari kita gunakan docker-compose stop
:
[email protected]:~/ghost$ docker-compose stop
[email protected]:~/ghost$
Sekarang mari kita periksa wadah berjalan kita. Diharapkan, seharusnya tidak ada:
[email protected]:~/ghost$ docker-compose ps
Name Command State Ports
---------------------------------------------------------------
ghost_ghost_1 docker-entrypoint.sh node ... Exit 0
Perhatikan bahwa saya tidak menggunakan docker ps
. Sebagai gantinya, saya menjalankan docker-compose ps
karena saya ingin menunjukkan cara lain untuk memverifikasi Exit 0
negara. Ini berarti penampung telah keluar/berhenti.
Mari kita periksa kembali dengan docker ps -a
. -a
flag juga akan mencari container yang dihentikan:
[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
Apa itu docker-compose start
lalu?
Docker Compose Start masuk akal hanya jika Anda belum menghapus container apa pun dengan docker-compose down
(yang belum saya lakukan di baris perintah tutorial ini). Jadi pada dasarnya, perbedaannya di sini adalah memulai kontainer yang telah dihentikan dan tidak dihapus.
Jadi, pertama, mari kita gunakan start
bukannya up
sekarang dan lihat apa yang terjadi:
[email protected]:~/ghost$ docker-compose start
Starting ghost ... done
[email protected]:~/ghost$
Apa yang terjadi sekarang adalah penampung yang dihentikan dimulai lagi:
[email protected]:~/ghost$ docker-compose ps
Name Command State Ports
-----------------------------------------------------------------
ghost_ghost_1 docker-entrypoint.sh node ... Up 2368/tcp
Ini dia. Status sekarang Up
kembali dari Exit 0
. Anda juga dapat memeriksa ulang dengan docker
versi perintah:
[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
Sekarang mari kita jalankan stop
perintah lagi.
[email protected]:~/ghost$ docker-compose stop
Stopping ghost_ghost_1 ... done
Anda sekarang tahu apa status wadah itu. Anda dapat menggunakan up
atau start
perintah untuk menjalankannya kembali. Perhatikan bahwa Anda dapat menjalankan down
dalam keadaan ini juga tanpa memulai layanan lagi:
[email protected]:~/ghost$ docker-compose down
Removing ghost_ghost_1 ... done
Network net is external, skipping
Wadahnya sudah dilepas sekarang. Jika ada jaringan internal yang ditentukan di dalam file Docker Compose, mereka juga akan dihapus. Sejak net
eksternal, itu dilewati dari penghapusan. Apakah Anda telah menentukan -v
bendera tambahan, itu akan dihapus juga!
[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
Selalu Berhati-hatilah Dengan Data Anda!
Kiat Bonus:Perhatikan bahwa karena saya menggunakan volume eksternal (dibuat sebelumnya melalui "docker volume create volume-name"), menggunakan "-v" tidak menghapusnya. Ini hanya dimaksudkan untuk volume yang dibuat dari spesifikasi Docker Compose Anda. Namun sebaliknya, "docker volume prune" akan menghapus volume eksternal meskipun sedang digunakan oleh container! Panduan Definitif tentang Backup dan Restore of Docker Containers Manfaatkan cloud dan sistem lokal Anda untuk mencadangkan dan memulihkan container Docker Anda. Buku Pegangan LinuxAvimanyu Bandyopadhyay
Juga, Anda tidak dapat menggunakan start
di panggung ini. Ini hanya berfungsi untuk stop
konfigurasi ped:
[email protected]:~/ghost$ docker-compose start
Starting ghost ... failed
ERROR: No containers to start
Dalam kasus seperti itu, Anda harus menggunakan docker-compose up
atau docker-compose up -d
sekali lagi.
[email protected]:~/ghost$ docker-compose up -d
Creating ghost_ghost_1 ... done
[email protected]:~/ghost$
Ringkasan
Saya harap artikel ini memberi Anda pemahaman yang lebih baik tentang up
vs up -d
vs start
serta stop
vs down
dan down -v
untuk Penulisan Docker.
Panduan penjelasan yang luas ini akan membuat manajemen buruh pelabuhan sehari-hari Anda jauh lebih mudah dan jauh lebih sedikit mulai sekarang. Bergantung pada skenario ke skenario, terutama dalam sistem produksi, perintah tertentu mana yang Anda pilih untuk menyelesaikan situasi, tentu saja, akan berbeda dalam cara Anda mengimplementasikannya.
Jika Anda memiliki pemikiran, pertanyaan, atau saran untuk dibagikan, silakan tinggalkan komentar di bawah.