[英]Is it possible to reuse an existing stopped container when docker-compose run command is fired?
我從 Visual Studio 2019 創建了以下簡單的 dotnet 核心控制台應用程序。
Console.WriteLine("Hello World!");
var readText = Console.ReadLine();
Console.WriteLine(readText);
然后我將 docker 支持添加到這個控制台項目。 我已經在另一個問題中編寫了分步說明以添加 docker 支持。
在命令提示符下,我現在導航到 docker-compose 文件所在的文件夾並發出以下命令
docker-compose run <service name from docker-compose.yml file>
特別是對於我的情況
docker-compose run dokconsoleapp
其中dokconsoleapp是在 docker-compose 文件中定義的服務名稱。
這將構建映像,並且我的控制台應用程序將在容器內以交互方式啟動和運行。
當應用程序退出時,容器停止。 現在,當我想再次運行時,我再次發出相同的命令。 該應用程序按預期運行。 但奇怪的是,該應用程序是在一個新容器中啟動的,而不是重用現有的停止容器。
所以我運行該命令三次,每次創建一個新容器時,請參見 docker 桌面。
現在我的問題是,我只是好奇,這里有沒有辦法運行 docker-compose 來重用現有容器,而不是創建新容器。
注意命令
docker-compose up
不起作用,因為它創建的容器不是交互式的。 所以我只能使用“運行”。 更多細節在這里。
使用docker-compose run $SERVICENAME
將始終創建一個新容器,如文檔中所述。
與運行一起使用的命令在具有由服務定義的配置的新容器中啟動,包括卷、鏈接和其他詳細信息。 但是,有兩個重要的區別。
我查看了您的另一篇文章,因為您正在嘗試獲得具有特定服務的交互式 shell,您可以通過以下方式實現。 查看示例docker-compose.yml
。
version: '3'
services:
test:
container_name: test
image: 'busybox'
command: sleep 5d
運行docker-compose up -d
-d
=> 以分離模式運行
command: sleep 5d
根據哪個容器將運行5 days
,然后運行 5 天,然后使用以下命令執行到容器中
$ docker exec -it test /bin/sh
然后你不會每次都得到新的容器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.