2014-10-10 29 views
12

Tôi đang cố gắng xây dựng hình ảnh docker một cách chậm rãi cho nhu cầu của mình. Những gì tôi muốn làm, là chạy hình ảnh cơ bản của tôi có mono, và sau đó có mono chạy một thực thi trong nền. từ dòng lệnh thông thường, mà không cố gắng chạy nó trong một vùng chứa, nó sẽ trông giống như:đối số dòng lệnh để docker chạy

/usr/local/bin/mono /home/crystal/Downloads/BackgroundProcesser.exe & 

Điều đó hoạt động tốt. Nhưng nếu tôi cố gắng làm điều đó khi tôi chạy thùng chứa như vậy:

sudo docker run -i -t crystal/mono-base /usr/local/bin/mono /home/crystal/Downloads/BackgroundProcesser.exe & 

Tôi nhận được No such file or directory. Có cách nào tôi có thể vượt qua số & không? Cuối cùng, tôi muốn vượt qua & để chạy BackgroundProcessor này ở chế độ nền và sau đó chạy một ứng dụng khác ở nền trước. Tôi thấy bài đăng này cho một giải pháp khác, http://blog.trifork.com/2014/03/11/using-supervisor-with-docker-to-manage-processes-supporting-image-inheritance/, nhưng tôi nghĩ tôi có thể chạy một số nội dung từ dòng lệnh để có bằng chứng về các khái niệm cho ứng dụng của chúng tôi.

Trả lời

17

sử dụng tùy chọn -c để bash để cho nó một dòng lệnh như là một chuỗi:

sudo docker run -i -t crystal/mono-base bash -c "/usr/local/bin/mono /home/crystal/Downloads/BackgroundProcesser.exe & /bin/bash" 

và đặt một cái gì đó sau khi lệnh backgrounded để container không ngay lập tức thoát khỏi

0

@ câu trả lời Ulfeldt của công trinh. Bạn có thể muốn tạo một kịch bản để quản lý các quy trình của mình, vì loại lệnh này sẽ nhanh chóng thoát ra khỏi tầm tay. Bạn cũng có thể sử dụng trình giám sát để chạy nhiều quy trình, như đã được giải thích elsewhere.

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