我正在创建nodejs应用程序的Docker容器。以下是我的Docker配置文件
的示例FROM node:6.11
WORKDIR /usr/src/app
COPY package.json .
npm install
copy . /usr/src/app
EXPOSE 80
CMD [ "npm", "start" ]
这将从Docker hub下载节点映像,然后根据配置创建Docker镜像。
出于安全考虑,我不想从Docker中心下载nodejs映像,而是希望使用我的私有存储库来下载nodejs映像。
由于我已经设置了私有存储库,因此我不确定如何在DockerFile中指定注册表凭据。
任何人都可以帮我吗?
答案 0 :(得分:2)
在构建Docker镜像之前,您必须对私人仓库进行docker login
。然后拉 - 显式或隐式通过FROM
将使用该注册表(虽然我找不到任何文档来支持它,但我怀疑如果它找不到那里的图像,它也会回退到Docker Hub,但是这可能取决于注册表设置????)
答案 1 :(得分:1)
默认情况下,docker从Dockerhub中提取所有图像。如果要从另一个注册表中提取图像,则必须在图像名称前加上注册表URL。查看official docker pull documentation。
在您的情况下,您有两个选择:
第一种是在Dockerfile中明确指定注册表:
FROM <registry>:<port>/node:6.11
WORKDIR /usr/src/app
构建完成后,图像将从私有注册表下载。在使用docker login
命令构建之前,请确保您已登录到注册表。
或者,如果您不想更改docker文件。使用docker pull <registry>:<port>/node:6.11
从私有注册表中提取图像,然后通过仅使用node:6.11
docker tag <registry>:<port>/node:6.11 node:6.11
答案 2 :(得分:0)
我猜你已经在本地docker注册表中拥有了nodejs镜像。 如果要从本地docker注册表中提取nodejs映像:
--insecure-registry <registry_address>:<port>
,如此处所述QML Specifics FROM <registry_address>:<port>/node:6.11
(实际上这将是本地docker注册表中nodejs图像的完整名称)docker login
命令https://docs.docker.com/engine/reference/commandline/dockerd/设置注册表凭据,也可以在~/.docker/config.json
文件中手动设置凭据。