使用过滤器检查是否存在特定名称的容器:(
请参阅docker ps
Filterring
)
#!/bin/bash
name='nginx'
[[ $(docker ps -f "name=$name" --format '{{.Names}}') == $name ]] ||
docker run --name "$name" -d nginx
该docker run
如果第一部分是假的,才执行。
为了安全起见(docker ps
可能会返回多个名称),您也可以选择这样做(如果您认为“ nginx”一词不能作为任何容器名称的一部分):
if ! docker ps --format '{{.Names}}' | grep -w nginx &> /dev/null; then
docker run --name nginx -d nginx
fi
要么:
if ! docker ps --format '{{.Names}}' | egrep '^nginx$' &> /dev/null; then
docker run --name nginx -d nginx
fi
只有当docker容器尚未运行时,我才需要运行它。给了这个命令。如果它不存在,我将如何运行它。 我对任何脚本或语言都持开放态度。
可以移除不运行的容器吗? 我知道,例如,这将从创建的图像中删除容器 但我想知道如何移除那些没有运行的
问题内容: 在旧版Docker for Windows中,我记得它明确表示它使用Linux VM作为内核。 但自从新的稳定版本(我认为是2016年7月发布)以来,它说 如果我理解正确,则指定的基本映像用于用户空间,并且使用主机的内核。因此,如果指定使用ubuntu基本映像运行echo命令,则Windows内核如何发挥作用? 还是我完全误会了什么? 问题答案: 适用于Windows的Docker仍使
我已经在我的主机虚拟机上安装了docker。现在想用vi创建一个文件。 但它向我展示了一个错误:
问题内容: 我正在研究Centos7。我有一个运行Jenkins的Docker容器。在那个Jenkins容器中,我必须构建并运行其他Docker容器。但是詹金斯不认识码头工人。我能够执行一个shell并将docker安装在容器中。但是,是否有可能让容器在主机上使用我的docker- engine?如何使用? 在Jenkins-(docker)-容器中安装Docker的最佳选择是什么? 问题答案:
我很难弄明白这一点。 所以我有一个基于Ubuntu映像的dockerfile。在我的dockerfile的末尾,我有: 什么都没发生..docker ps显示没有正在运行的容器 但如果我跑: 容器开始运行,我在shell中,docker ps显示这个容器正在运行。所有工作都按预期进行,但我的django项目不在那里,我的理解是运行/bin/bash会覆盖dockerfile中的CMD,这意味着dj