首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查码头拉是否真的拉了什么东西?

如何检查码头拉是否真的拉了什么东西?
EN

Stack Overflow用户
提问于 2018-08-01 07:37:43
回答 5查看 6.4K关注 0票数 5

我有以下脚本来更新我的Nextcloud:

代码语言:javascript
复制
#!/bin/bash

set -ex

docker pull nextcloud
docker rm -f nextcloud
docker run -d -p 8080:80 -v nextcloud:/var/www/html --name nextcloud --restart=unless-stopped nextcloud
docker image prune -f

问题是,即使出现了新的拉动,它也会创建新的容器。

我如何检查,是否docker pull真的提取了什么,或者我的图像是否已经是最新的?在这两种情况下,docker pull的退出代码都是0。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2018-08-01 07:48:14

您可以检查docker pull命令的输出:

代码语言:javascript
复制
#!/bin/bash    
set -ex

out=$(docker pull nextcloud)

if [[ $out != *"up to date"* ]]; then
   docker stop nextcloud
   docker rm -f nextcloud
   docker run -d -p 8080:80 -v nextcloud:/var/www/html --name nextcloud -- 
   restart=unless-stopped nextcloud
   docker image prune -f
fi
票数 7
EN

Stack Overflow用户

发布于 2018-08-01 07:47:45

首先,如果没有指定标记,则意味着要提取最新版本。为了更清楚地说明,你可以:

代码语言:javascript
复制
#!/bin/bash

set -ex

docker pull nextcloud:latest
docker rm -f nextcloud
docker run -d -p 8080:80 -v nextcloud:/var/www/html --name nextcloud --restart=unless-stopped nextcloud:latest
docker image prune -f

如果你想知道你是否提取了一个图像,我认为你说的是退出代码总是0是对的,不管是码头客拉一个新图像还是本地图像已经是最新的了。但是,您可以捕获Status: Image is up to date...Status: Downloaded newer image...的停靠器拉命令和grep的输出。

类似于:

docker pull nextcloud:latest | grep "Image is up to date" && echo "Didn't downloaded anything" || echo "Downloaded new image"

把所有东西拼凑在一起:

代码语言:javascript
复制
#!/bin/bash

set -ex

docker pull nextcloud:latest | grep "Image is up to date" && pull_status="already_pulled" || pull_status="newly_pulled"

if [ "$pull_status" = "newly_pulled" ]; then
docker rm -f nextcloud
docker run -d -p 8080:80 -v nextcloud:/var/www/html --name nextcloud --restart=unless-stopped nextcloud:latest
docker image prune -f
fi
票数 2
EN

Stack Overflow用户

发布于 2018-08-01 08:10:52

您可以获得本地可用版本的图像id,用于ex:

代码语言:javascript
复制
> docker image ls nginx:latest | awk '/nginx/ {print $3}'
> 649dcb69b782

“最新”是默认使用的标记。

当您执行停靠器拉时,您可以再次使用该命令检查图像id是否已更改,然后采取相应的行动。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51627803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档