如何指定确切的docker容器版本

如何指定确切的docker容器版本,docker,Docker,我的服务器有一些奇怪的错误,我找不到,所以我只是删除了所有docker图像,并再次下载它们。奇怪的是,同样的错误现在也出现在服务器的更新版本中。我的直觉是,docker并没有下载完全相同的图片,而是下载一些导致这个bug的更新版本 问题是,我如何强制docker使用与以前完全相同的版本 查看my docker-compose.yml,我可以看到rabbitmq和mongo具有不同的“创建”日期,尽管它们的版本号在docker compose文件中指定: services: messageq:

我的服务器有一些奇怪的错误,我找不到,所以我只是删除了所有docker图像,并再次下载它们。奇怪的是,同样的错误现在也出现在服务器的更新版本中。我的直觉是,docker并没有下载完全相同的图片,而是下载一些导致这个bug的更新版本

问题是,我如何强制docker使用与以前完全相同的版本

查看my docker-compose.yml,我可以看到rabbitmq和mongo具有不同的“创建”日期,尽管它们的版本号在docker compose文件中指定:

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
标记,而是使用
最新的
标记。这就是问题所在吗?