Skip to content
/var/log/tienvv.blog
About meLinkedin

docker-compose up hay restart?

cloud, devops, tech, docker, feature1 min read

Hôm nay có bạn đồng nghiệp hỏi tôi, sao tao build lại image, restart lại rồi mà vẫn chạy "same shit", không thấy thay đổi gì? Tôi liền hỏi bạn rằng: "Thế bạn đã biết sự khác nhau giữa docker-compose up & docker-compose restart chưa?"

RESTART

Đầu tiên, hãy nói về docker-compose restart theo tài liệu của docs.docker.com

Restarts all stopped and running services.

If you make changes to your docker-compose.yml configuration these changes are not reflected after running this command.

Hay nói cách khác, restart chỉ đơn thuần restart container, chạy lại từ entrypoint và giữ nguyên image, configuration, volume, container id...

UP

Tiếp đến,  hãy nói về docker-compose up

Builds, (re)creates, starts, and attaches to containers for a service.

If there are existing containers for a service, and the service’s configuration or image was changed after the container’s creation, docker-compose up picks up the changes by stopping and recreating the containers (preserving mounted volumes). To prevent Compose from picking up changes, use the --no-recreate flag.

Tức là up sẽ tạo container mới và nếu đã tồn tại container đang chạy, thì kiểm tra sự thay đổi về image, configuration (dựa vào file cấu hình docker-compose.yml), sau đó recreate (stop and create) container, và đồng thời cũng chạy lại từ entrypoint.

EXAMPLE

Cùng xem ví dụ dưới đây để hiểu rõ hơn sự khác biệt này image 4

  • dummy_worker_1 là container đang chạy có container id là 449b0467fcea.
  • Khi inspect container 449b0467fcea ta sẽ có được Image hash hiện tại là 77954..
  • Sau khi thay đổi và build image worker lại, ta có Image hash mới nhất là 854dc..
  • docker-compose restart worker chỉ restart container dummy_worker_1 và giữ nguyên image, configuration, volume, container id... nên container id vẫn là 449b0467fcea, nhưng status thay đổi thành Up 2 seconds chứng tỏ container vừa mới được khởi động lại
  • docker-compose up -d worker thực hiện re-creating (stop and create) container dummy_worker_1. Kết quả là container id đã đổi thành efa81e72c7a, created và status cũng được cập nhật tương ứng. Cuối cùng ta kiểm tra container đang chạy với image nào thì chính là Image hash mới nhất (854dc..)

KẾT

docker-compose restart: restart service, dùng trong trường hợp cần khởi động lại container.

docker-compose up : re-create service, dùng trong trường hợp cần cập nhật cấu hình & image mới nhất

© 2024 by /var/log/tienvv.blog. All rights reserved.
Theme inspired by LekoArts