docker - 如何将docker image作为单例运行

标签 docker

我是Docker的新手。

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

这可以用docker完成吗?

如果有帮助,我将以特权模式运行docker。

我试图搜索单例 docker 或类似的东西,但没有运气。

更新-
1.从ubuntu工作。
我的场景-从X终端运行docker run Image_a从终端Y我运行docker run Image_a当尝试从终端Y运行时,我希望docker检查是否已经有一个运行Image_a的docker,答案是正确的-我希望docker不要在终端Y中运行

最佳答案

您可以使用以下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

关于docker - 如何将docker image作为单例运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42548784/

相关文章:

docker - 运行任务之前大厅等待很长时间

php - Symfony 4 Doctrine无法连接到Docker MySQL

python-3.x - Docker 容器总是显示 ssl 连接错误

linux - 从 "Docker Hub"下载镜像后,我应该把我的配置文件放在哪里?在数据量上?

apache - 在 Docker 容器上启动 Apache

docker - 哪些组件应该是 "containerized"- Docker

docker - 从多阶段构建转换为单阶段

docker - Docker 容器内的 Roundcube 和 Dovecot

bash - 引用传递给docker入口点的第一个参数?

docker - 如何在yml文件中的Github Action中部署docker容器?