取而代之的是从本地docker映像中提取

我有一个Dockerfile内容的应用程序,看起来像

Dockerfile

FROM SOME_NUMBERS.dkr.ecr.us-east-1.amazonaws.com/app_name:SOME_HEX_VALUE COPY docker/app/bin/startup.sh /usr/bin/ CMD ["/usr/bin/startup.sh"] 

我不想从亚马逊拉的形象,而是我想从已经存在的本地图像“拉”,拉第一个docker-compose up --build命令后运行。

当我做docker images我得到

SOME_NUMBERS.dkr.ecr.us-east-1.amazonaws.com/app_name SOME_HEX_VALUE SOMESHORT_HEX 2 days ago 1.54 GB这意味着图像已经在本地。 我明白这一点

如果主机有你想要docker-compose使用的图像,它将使用该图像,但是如果主机没有它,它会去泊坞窗集线器或任何你已经在你的configurationregistry

所以我将Dockerfile的内容更改为:

FROM IMAGE_ID:SOME_HEX_VALUE其中IMAGE_ID是存储库的映像ID,当我执行docker images但是我得到Service 'app' failed to build: repository SOMESHORT_HEX not found: does not exist or no pull access ,我想知道如何告诉Docker使用本地图像,而不是试图从亚马逊的url拉。 有任何想法吗?

首先从本地Docker引擎中的远程存储库中提取图像:

 docker pull SOME_NUMBERS.dkr.ecr.us-east-1.amazonaws.com/app_name:SOME_HEX_VALUE 

现在,给图像一个新的本地标签:

 docker tag SOME_NUMBERS.dkr.ecr.us-east-1.amazonaws.com/app_name:SOME_HEX_VALUE my-image-name 

现在您可以简单地引用my-image-name ,如下所示:

 FROM my-image-name 

你应该:

 FROM IMAGE_ID 

或者,这已经很好了:

 FROM SOME_NUMBERS.dkr.ecr.us-east-1.amazonaws.com/app_name:SOME_HEX_VALUE 

其中SOME_HEX_VALUE是标记版本( docker images的第二列)。 请注意,如果图像出现在您的计算机上,泊坞窗将不会再尝试拉它。