从本地镜像制作docker文件?

whi*_*ear 0 docker

我有制作图像的 docker 文件。

FROM public.ecr.aws/lambda/python:3.9

RUN export LANG=en_US.UTF-8
RUN export PYTHONUNBUFFERED=1 
Run Code Online (Sandbox Code Playgroud)

docker build -f dockers/mydocker -t python .

然后我想用这张图片制作图像。

列出了名为 basic 的图像docker images

然后在另一个 Dockerfile 中。

FROM python
ADD ./Pipfile* ./
RUN pipenv install --ignore-pipfile 
Run Code Online (Sandbox Code Playgroud)

当我尝试构建这个 dockerfile 时

有这样来的

FROM docker.io/library/python

这是否意味着我可以使用本地图像来构建下一个图像?

我需要为此目的创建本地存储库?

或者还有其他方法可以做到这一点吗?

Dav*_*aze 5

这可能工作正常,但您应该小心选择与标准 Docker Hub 映像名称不冲突的名称。

\n

Docker 映像名称的格式为registry.example.com/path/name. 如果您没有明确指定注册表,则它始终默认为docker.io(无法更改),如果您也没有指定路径,则它默认为docker.io/library/name. docker build -t在所有上下文 \xe2\x80\x93选项、docker run镜像名称、DockerfileFROM行以及镜像名称出现的任何其他地方都是如此。

\n

这意味着,当您运行时,您将创建一个与Docker Hub映像docker build -t python同名的本地映像。诊断程序将向您显示扩展名称。不过,它实际上应该基于您当地的形象;Docker 不会联系远程注册表,除非本地镜像丢失或者您明确告知它。pythondocker build

\n

我建议在这里选择一些明确的名称。您并不特别需要 Docker Hub 帐户,但请尽量避免与标准映像冲突的裸名称。

\n
# this will work even if you don\'t "own" this Docker Hub name\ndocker build -f Dockerfile.base -t whitebear/python .\n
Run Code Online (Sandbox Code Playgroud)\n
FROM whitebear/python\n...\n
Run Code Online (Sandbox Code Playgroud)\n

(您可能无法看到基本图像的效果,因为它RUN export没有执行任何操作;请将基本图像中的这些行更改为ENV。)

\n