如何指定确切的docker容器版本
我的服务器有一些奇怪的错误,我找不到,所以我只是删除了所有docker图像,并再次下载它们。奇怪的是,同样的错误现在也出现在服务器的更新版本中。我的直觉是,docker并没有下载完全相同的图片,而是下载一些导致这个bug的更新版本 问题是,我如何强制docker使用与以前完全相同的版本 查看my docker-compose.yml,我可以看到rabbitmq和mongo具有不同的“创建”日期,尽管它们的版本号在docker compose文件中指定:如何指定确切的docker容器版本,docker,Docker,我的服务器有一些奇怪的错误,我找不到,所以我只是删除了所有docker图像,并再次下载它们。奇怪的是,同样的错误现在也出现在服务器的更新版本中。我的直觉是,docker并没有下载完全相同的图片,而是下载一些导致这个bug的更新版本 问题是,我如何强制docker使用与以前完全相同的版本 查看my docker-compose.yml,我可以看到rabbitmq和mongo具有不同的“创建”日期,尽管它们的版本号在docker compose文件中指定: services: messageq:
services:
messageq:
image: rabbitmq:3
container_name: annotator_message_q
environment:
- RABBITMQ_DEFAULT_USER=user
- RABBITMQ_DEFAULT_PASS=password
networks:
- cocoannotator
database:
image: mongo:4.0
container_name: annotator_mongodb
restart: always
environment:
- MONGO_DATA_DIR=/data/db
- MONGO_LOG_DIR=/dev/null
volumes:
- "mongodb_data:/data/db"
command: "mongod --smallfiles --logpath=/dev/null"
规范rabbitmq:3和mongo:4.0是否不够具体
规范rabbitmq:3和mongo:4.0是否不够具体
事实并非如此。默认情况下,Docker Hub和其他Docker注册表中的标记是可变的。这意味着,您可能拥有无限数量的实际图像-所有图像都注册为rabbitmq:3
完全证明特定版本的变体是使用sha256摘要。这是带电系统的唯一推荐方式。即,使用
rabbitmq:3@sha256:fddabeb47970c60912b70eba079aae96ae242fe3a12da3f086a1571e5e8c921d
不幸的是,如果您已经删除了所有图像,您可能无法恢复准确的版本。如果你还在某个地方,那么做一些类似于
docker images | grep rabbitmq
,然后对匹配的图像进行docker image inspect
,以找出它们的sha256摘要。你能解释一下这个错误吗?如果您不需要现有数据库数据,并且环境正在开发中,请尝试运行docker compose down-v
,然后使用docker compose up-d--build
重新构建服务。这可能会解决问题,但除非您提供更多关于该bug的描述,否则无法确定。警告docker compose down-v
将删除您用于服务的所有现有卷。几个月前我运行了一个“无错误”版本,所以我刚刚尝试重新安装该版本。由于该漏洞现在也出现在该版本中,我估计rabbitmq或mongo版本已秘密更改,因此我只想确保docker安装100%完全相同的版本以消除该漏洞基本上您的rabbitmq:3
没有使用3
标记,而是使用最新的标记。这就是问题所在吗?