昨晚对我的代码做了很多更改后,我制作了一个新的图像,然后我发现有问题。虽然代码回滚非常复杂,但我建议所有最终用户应用程序都使用以前的映像,而不是docker文件中的latest
版本。
问题是,所有的历史图像都显示为<missing>
,与两年前的图像相同。那么,我有可能识别出那个,它的最后一次修改是在两年前,这样我就可以为所有最终用户制作一个标签吗?
谢谢。
IMAGE CREATED CREATED BY SIZE COMMENT
c40bfd5de465 14 hours ago /bin/sh -c #(nop) CMD ["sh" "-c" "./docker-… 0B
<missing> 14 hours ago /bin/sh -c #(nop) EXPOSE 18080/tcp 0B
<missing> 14 hours ago /bin/sh -c chmod a+x $AUTO_RUN_DIR/$VKERSERV… 6.74kB
<missing> 14 hours ago /bin/sh -c #(nop) COPY file:1b1e438b24742cd0… 6.74kB
<missing> 14 hours ago /bin/sh -c #(nop) COPY file:5d809f1661bd3bdb… 3.25kB
<missing> 14 hours ago /bin/sh -c #(nop) COPY file:7208a6bafb3a6a01… 2.85kB
<missing> 14 hours ago /bin/sh -c #(nop) COPY file:64bca67554c00d6c… 3.03kB
<missing> 14 hours ago /bin/sh -c mkdir -p /runtime/temp/vkmq/ 0B
<missing> 14 hours ago /bin/sh -c mkdir -p /root/vkds/vkredis-api/v… 0B
<missing> 14 hours ago /bin/sh -c mkdir -p $WORK_PATH 0B
<missing> 14 hours ago /bin/sh -c #(nop) ENV VKREDIS_APPNAME= VKRE… 0B
<missing> 14 hours ago /bin/sh -c #(nop) ENV INIT_MYSQL=init_mysql… 0B
<missing> 14 hours ago /bin/sh -c #(nop) ENV VKERSERVER_START=vkse… 0B
<missing> 14 hours ago /bin/sh -c #(nop) ENV AUTO_RUN_DIR=/docker-… 0B
<missing> 14 hours ago /bin/sh -c #(nop) ENV WORK_PATH=/usr/local/… 0B
<missing> 14 hours ago /bin/sh -c #(nop) ADD file:57dbba438276944df… 118MB
<missing> 2 years ago /bin/sh -c #(nop) ADD file:346d4cb58fff5e7b9… 2.02kB
<missing> 3 years ago /bin/sh -c #(nop) CMD ["mysqld"] 0B
<missing> 3 years ago /bin/sh -c #(nop) EXPOSE 3306/tcp 0B
<missing> 3 years ago /bin/sh -c chmod 777 /var/run/mysqld 0B
<missing> 3 years ago /bin/sh -c mkdir /var/run/mysqld 0B
<missing> 3 years ago /bin/sh -c pip install --upgrade awsebcli 11.4MB
<missing> 3 years ago /bin/sh -c pip install --upgrade awscli 38.2MB
<missing> 3 years ago /bin/sh -c apt-get -q -y install python-pip 97.5MB
<missing> 3 years ago /bin/sh -c apt-get -q -y install grunt 6.12MB
<missing> 3 years ago /bin/sh -c apt-get -q -y install npm 238MB
<missing> 3 years ago /bin/sh -c apt-get -q -y install mysql-server 359MB
<missing> 3 years ago /bin/sh -c apt-get update 10.2MB
以下是最终用户的docker-compose.yml:中的一个示例组件
XXX-server:
image: code.xxx.com.cn:4567/redis/redis-server:latest
container_name: service-redis
docker history
输出显示了制作图像的步骤;它没有显示图像的过去版本。如果您的图像是由FROM
或其他图像构建的,则docker history
输出也包括其步骤。如果我要从历史中猜测,你有一个相当旧的基本映像(包括一些命令行工具Node,还有一个MySQL守护进程(,一个稍微新一点的中间映像(COPY
中的某个文件(,然后你当前的Dockerfile就是FROM
。
在当前Docker上;图像";列显示<missing>
,您不能返回到作为图像的中间层。(在非常旧的Docker版本上,这通常是可能的。(
不过,使用Docker镜像来支持您所描述的那种回滚是很常见的。不要将您的图像标记为latest
;相反,使用日期戳或源代码管理提交ID作为图像标记。
image: code.xxx.com.cn:4567/redis/redis-server:20201113
然后,如果你发现今天的构建不起作用,你可以很容易地将其切换回昨天的构建。
您也可以在docker-compose.yml
文件中使用变量替换,让特定的图像版本作为环境变量传入:
image: code.xxx.com.cn:4567/redis/redis-server:${REDIS_TAG:-latest}
REDIS_TAG=20201113 docker-compose up -d