如何在Dockerconfiguration文件中指定Docker私有registry凭据?
我正在创buildnodejs应用程序的Docker容器。 以下是我的Dockerconfiguration文件的示例
FROM node:6.11 WORKDIR /usr/src/app COPY package.json . npm install copy . /usr/src/app EXPOSE 80 CMD [ "npm", "start" ]
这将从Docker集线器下载节点映像,然后根据configuration创buildDocker映像。
出于安全原因,我不想从Docker中心下载nodejs镜像,而是想使用我的私有存储库下载nodejs镜像。
正如我设置私人存储库,我不知道如何在DockerFile指定registry凭据。
谁能帮我这个?
默认情况下,docker从Dockerhub中提取所有图像。 如果要从另一个registry中提取图像,则必须在图像名称前加registryURL。 检查官方docker拉文件 。
就你而言,你有两个select:
首先是明确指定Dockerfile中的registry,如下所示:
FROM <registry>:<port>/node:6.11 WORKDIR /usr/src/app
一旦你build立,图像将从私人登记处下载。 在使用docker login
命令构build之前,请确保您已经login到registry。
或者,如果您不想更改泊坞窗文件。 使用docker pull <registry>:<port>/node:6.11
从私有registry中docker pull <registry>:<port>/node:6.11
,然后强制docker pull <registry>:<port>/node:6.11
build使用这个图像,只用node:6.11
标记它node:6.11
docker tag <registry>:<port>/node:6.11 node:6.11
在构buildDocker镜像之前,您必须执行docker login
到您的私有仓库。 然后拉 – 显式或隐式通过FROM
将使用该registry(虽然我找不到任何文档来支持,我怀疑它也回落到Docker Hub,如果它无法find那里的形象,但这可能是依赖关于registry设置????)
我猜你已经在你的本地dockerregistry中有了nodejs镜像。 如果您想从本地dockerregistry中获取nodejs映像,请执行以下操作:
- 确保您的
--insecure-registry <registry_address>:<port>
守护进程指向本地--insecure-registry <registry_address>:<port>
registry使用--insecure-registry <registry_address>:<port>
如这里所述https://docs.docker.com/engine/reference/commandline/dockerd/ - 将Dockerfile更改为指向registry中的映像。
FROM <registry_address>:<port>/node:6.11
(实际上这将是本地dockerregistry中nodejs图像的完整名称) - 可以使用
docker login
命令https://docs.docker.com/engine/reference/commandline/login/设置registry凭证,也可以在~/.docker/config.json
文件中手动设置凭据。 - 现在你可以build立图像,它应该从registry中拉出基本图像。