2015-01-14 27 views
5

Tôi có một bộ kiểm tra mà tôi muốn chạy trên vùng chứa docker. Ở giữa các bài kiểm tra tôi đang thay đổi dữ liệu kiểm tra và tôi cần phải khởi động lại JETTY.Docker: làm thế nào để khởi động lại quá trình bên trong container?

Cách tốt nhất để làm điều đó là gì?

tôi có thể tưởng tượng một số tùy chọn:

  1. Với SSH - nhưng đối với ssh Docker không phải là lựa chọn tốt nhất.

  2. Tác nhân Python trên đế để nghe ổ cắm - hiển thị thêm một cổng, kết nối và khởi động lại cầu cảng.

Có thể có những ý tưởng tốt hơn cho điều đó?

Cảm ơn

Trả lời

10

Âm thanh như quá trình bạn đang cố gắng để khởi động lại là quá trình chính cho container Docker (tức là bạn đặt. trong Dockerfile của bạn nếu bạn có một, và khi bạn chạy 'ps -ef' bên trong container bạn sẽ thấy PID cho quá trình của bạn thiết lập để 1). Nếu trường hợp này xảy ra, thì bạn không thể khởi động lại từ bên trong vùng chứa. Bạn chỉ nên khởi động lại chứa chính nó:

docker restart <container_id> 
+0

Đã gần một năm rưỡi trước ... :) Thực tế đây là cách đúng đắn để khởi động lại quy trình. Chỉ khởi động lại vùng chứa docker. Đây là nguyên tắc chính của giải pháp docker. – SergiiKozlov

2

Nhập vùng chứa và khởi động lại vùng chứa.

Way Manual:

docker exec -it <containeridorname> /bin/bash 

Hoặc Way tự động:

docker exec -it <containeridorname> /restartjettycommand.sh 
+0

Cảm ơn cho các giải pháp. Nó hoạt động tốt. Nhưng bây giờ tôi có một vấn đề khác. Tôi bắt đầu cầu cảng với lệnh CMD từ Dockerfile. Và có vẻ như tôi không thể khởi động lại quá trình này: ( – SergiiKozlov

+0

Tôi không chắc chắn về các chi tiết cho bản thân cầu cảng. Một thay thế sẽ là sử dụng một cái gì đó như runit hoặc supervisord - sau đó bạn có thể exec vào container và chỉ cần khởi động lại dịch vụ. – user2105103

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