簡體   English   中英

Docker 在后台啟動一個進程並且仍然交互使用容器

[英]Docker start a process on startup in the background and still use the container interactively

我使用 Docker 容器進行科學計算。 我所有的庫都安裝在 docker 容器內。 此外,我安裝了 ParaView 以進行實時可視化。
對於我的模擬管道,我需要讓 ParaView 服務器在容器內運行,同時在其中使用我的 bash shell。 對我來說,一個可行的解決方案是使用 tmux 作為終端多路復用器,在一個終端 session 中啟動 pvserver,然后使用另一個來做我的模擬工作。
但是,這非常不方便,我想在每次容器啟動時在后台自動啟動 ParaView 服務器。 為此,我嘗試將 ENTRYPOINT 修改為:

ENTRYPOINT pvserver && /bin/bash

這可行,但不允許我使用 shell,也不能在后台移動 pvserver 進程。 因此它不能解決我不使用 tmux 的問題。 然后我嘗試將pvserver命令移動到 CMD 塊中,但這只會啟動並直接結束進程。 那么如何在后台啟動服務器,同時在使用-it標志啟動容器時仍然能夠像往常一樣使用 shell。

一般來說,我已經閱讀了幾個關於這個主題的問題,但是大多數問題(或 docker 文檔本身)都集中在后台運行一個進程並使用 bash 作為不終止容器的主進程,或者他們專注於像文檔中一樣同時運行多個預定義進程(不是 shell)。

您找到的文檔說要這樣做的原因是因為容器的使用方式就是這樣。 每個容器一個進程。

您可以嘗試在您的服務上發布一個端口,然后使用您的本地 shell 通過發布的端口與容器進行交互。

或者您可以嘗試將 shell 和服務器拆分為兩個容器,然后執行到 shell 容器中,然后訪問服務器容器,但這有點復雜且不必要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM