2016-04-27 51 views
33

Có phạm vi dịch vụ được định nghĩa trong docker-compose.yml. Các dịch vụ này đã được bắt đầu. Tôi cần phải xây dựng lại chỉ một trong số này và bắt đầu nó mà không cần lên các dịch vụ khác. Tôi chạy các lệnh sau:Làm thế nào để xây dựng lại container docker trong docker-compose.yml?

docker-compose up -d # run all services 
docker-compose stop nginx # stop only one. but it still running !!! 
docker-compose build --no-cache nginx 
docker-compose up -d --no-deps # link nginx to other services 

Cuối cùng tôi có thùng chứa nginx cũ. Bằng cách docker-compose không giết tất cả các thùng chứa đang chạy!

Trả lời

16

này cần khắc phục vấn đề của bạn:

docker-compose ps # lists all services (id, name) 
docker-compose stop <id/name> #this will stop only the selected container 
docker-compose rm <id/name> # this will remove the docker container permanently 
docker-compose up # builds/rebuilds all not already built container 
+3

nếu bạn muốn 'stop' và' rm' tất cả các vùng chứa, bạn có thể sử dụng lệnh 'docker-compose down'. Giải pháp của bạn tốt hơn nếu bạn chỉ muốn loại bỏ một số. – hirowatari

1

Vấn đề là:

$ docker-compose stop nginx 

đã không làm việc (bạn nói nó vẫn chạy). Nếu bạn đang đi để xây dựng lại nó dù sao, bạn có thể cố gắng giết chết nó:

$ docker-compose kill nginx 

Nếu nó vẫn không hoạt động, hãy thử để ngăn chặn nó với Docker trực tiếp:

$ docker stop nginx 

hoặc xóa nó

$ docker rm -f nginx 

Nếu vẫn không hiệu quả, hãy kiểm tra phiên bản đế của bạn, bạn có thể muốn nâng cấp.

Nó có thể là một lỗi, bạn có thể kiểm tra xem có phù hợp với hệ thống/phiên bản của bạn hay không. Dưới đây là một cặp vợ chồng, cho ví dụ: https://github.com/docker/docker/issues/10589

https://github.com/docker/docker/issues/12738

Là một khắc phục, bạn có thể thử để giết tiến trình.

$ ps aux | grep docker 
$ kill 225654 # example process id 
-3

Chỉ:

$ docker-compose restart [yml_service_name] 
+1

điều này sẽ không tạo thay đổi mới. từ hướng dẫn - Nếu bạn thay đổi cấu hình docker-compose.yml, những thay đổi này sẽ không được phản ánh sau khi chạy lệnh này. – denov

48

docker-compose up

$docker-compose up -d --no-deps --build <service_name> 

--no-DEPS - Không bắt đầu các dịch vụ liên quan.

--build - Tạo hình ảnh trước khi bắt đầu vùng chứa.

+2

'docker-compose build service1 service2 --no-cache' thực hiện công việc này tốt hơn (https://github.com/docker/compose/issues/1049). Tôi gặp sự cố với vùng chứa được lưu trong bộ nhớ cache đã được tạo trước khi sử dụng 'docker-compose up -d --no-deps --build ' – evgpisarchik

Các vấn đề liên quan