我只需要在尚未运行的情况下运行docker容器.鉴于此命令.如果它不存在,我将如何运行它.
docker run --name nginx -d nginx
Run Code Online (Sandbox Code Playgroud)
我对任何脚本或语言都是开放的.
Eug*_*yer 38
我肯定会建议调查docker-compose并docker-compose up按照上面的回答.
既然你的问题是运行,我会简化VonC的答案
docker run
如果容器已在运行,则docker start将返回0,因此不会调用run.如果容器EXISTS但没有运行,start将启动它,否则它会创建它.
VonC答案中缺少存在但已停止的部分.
Von*_*onC 19
使用过滤器检查是否存在某个名称的容器:(
请参阅docker ps Filterring)
#!/bin/bash
name='nginx'
[[ $(docker ps -f "name=$name" --format '{{.Names}}') == $name ]] ||
docker run --name "$name" -d nginx
Run Code Online (Sandbox Code Playgroud)
该docker run如果第一部分是假的,才执行.
好吧,如果您对任何语言持开放态度,我建议使用 docker-compose 来完成此任务。安装后,创建一个名为 docker-compose.yml 的文件,其中包含以下内容:
version: '2'
services:
nginx:
image: 'nginx'
Run Code Online (Sandbox Code Playgroud)
然后使用:
docker-compose up -d
Run Code Online (Sandbox Code Playgroud)
它会始终检查容器是否已经在运行。如果容器不存在,它将创建它并运行。如果容器已停止,则只需运行它即可。
最好的事情是,如果您更改 docker-compose.yml 或拉取新版本的映像,它将自动重新创建容器,保留所有卷,甚至是未命名的卷。
问候
| 归档时间: |
|
| 查看次数: |
9286 次 |
| 最近记录: |