我是码头工人的新手。
我有一个想要运行的图像,但我希望docker能够看到该图像是否已经从另一个终端运行...如果它正在运行我不希望它加载另一个...
这可以用docker完成吗?
如果有帮助,我正在使用特权模式运行docker。
我试图搜索单身码头或类似的东西,但没有运气。
更新 -
来自ubuntu的工作。
我的方案 - 从终端X我运行docker run Image_a
从终端Y我运行docker run Image_a
当试图从终端Y运行时,我希望docker检查是否已经有一个运行Image_a的docker,答案是真的 - 我希望docker不要在终端Y中运行
答案 0 :(得分:1)
您可以使用以下docker命令获取从特定映像运行的所有容器:
docker ps --filter ancestor="imagename:tag"
示例:
docker ps --filter ancestor="drone/drone:0.5"
示例输出:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3fb00087d4c1 drone/drone:0.5 "/drone agent" 6 days ago Up 26 minutes 8000/tcp drone_drone-agent_1
这种方法使用docker api和docker守护进程,因此在后台或其他终端执行run命令无关紧要。
另一种方法:
如果您有一个容器形成一个图像:
尝试命名您的容器,您不能拥有2个具有相同名称的容器:
docker run --name uniquecontainer Image_a
下次运行上述命令时,您将收到错误消息。顺便说一下,考虑使用-d
,所以你不必切换终端。
docker run -d --name uniquecontainer Image_a