2016-01-28 23 views
7

Nếu tôi sử dụng docker exec cháy lên một vỏ,Docker: lắp lại cho `Docker quá trình exec`

docker exec -ti <CONTAINER> /bin/bash 

tôi có thể sử dụng tổ hợp phím Ctrl + p Ctrl + q tách quá trình shell này. Sau đó, vỏ này vẫn đang chạy bên trong thùng chứa, nhưng làm cách nào tôi có thể gắn lại vào một vỏ cụ thể đó (một cái bắt đầu bằng docker exec, chứ không phải docker run)?

Trả lời

1

docker exec là đặc biệt để chạy những thứ mới trong vùng chứa đã bắt đầu, có thể là trình bao hoặc một số quy trình khác.

docker attach là để đính kèm vào quy trình đang chạy, vì vậy bạn chỉ có thể sử dụng một phiên bản trình bao.

Run bạn container (quy trình)

docker run -tid --name <CONTAINER> <IMAGE>:<TAG> bin/bash 

Sau đó

docker attach <CONTAINER> 

Để tách Ctrl + p + Ctrl + q

Trên đường này yo bạn có thể đính kèm và tách nhiều lần chỉ với một phiên bản của vỏ

+1

bạn cũng có thể sử dụng các công cụ như 'tmux' hoặc' screen' và chạy chúng bên trong vùng chứa – vodolaz095

+2

Xin lỗi, đây không phải là câu trả lời tôi đang tìm kiếm. Tôi có thể đính kèm vào vỏ chính không có vấn đề, như mô tả ở trên. Nhưng tôi muốn gắn lại vào shell thứ hai mà tôi đã khởi chạy với 'docker exec' và bây giờ đã được tách ra. –

+2

Tôi không nghĩ rằng có cách để làm điều đó bây giờ, bởi vì lệnh 'exec' không được thiết kế để –

3

Đáng buồn thay, điều này là không thể; xem this issue on GitHub. Tôi cũng muốn chức năng này, nhưng tại thời điểm này có vẻ như không có cách nào trực tiếp để làm điều này.

Đã giải quyết xong cách xử lý trường hợp bạn đang truy cập hộp qua số ssh và chạy docker exec trên hộp điều khiển từ xa (hoặc trường hợp trình mô phỏng thiết bị đầu cuối của bạn không ổn định và có thể gặp sự cố) : Always run your docker exec commands inside screen or tmux. Nếu bạn làm điều này, bất cứ khi nào bạn bị tách ra khỏi phiên screen/tmux, bạn có thể đính kèm lại sau và vẫn có thể truy cập các lệnh docker exec của mình. (Đây là một chút khác nhau hơn là những gì suggested by @vodolaz095, vì nó liên quan đến việc chạy screen hoặc tmuxngoài container, làm cho nó phù hợp để sử dụng với container mà không chạy screen/tmux như quá trình chính của họ)

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