如何将docker镜像作为单例运行

时间:2017-03-02 07:00:17

标签: docker

我是码头工人的新手。

我有一个想要运行的图像,但我希望docker能够看到该图像是否已经从另一个终端运行...如果它正在运行我不希望它加载另一个...

这可以用docker完成吗?

如果有帮助,我正在使用特权模式运行docker。

我试图搜索单身码头或类似的东西,但没有运气。

更新 - 来自ubuntu的工作。 我的方案 - 从终端X我运行docker run Image_a 从终端Y我运行docker run Image_a 当试图从终端Y运行时,我希望docker检查是否已经有一个运行Image_a的docker,答案是真的 - 我希望docker不要在终端Y中运行

1 个答案:

答案 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