关于 Docker 构建和本地 Docker 回购的问题

Questions on Docker Build and Local Docker Repo

我正在尝试使用以下命令创建 docker 图像。

docker build -t mytestapp .

我的DockerFile看起来像这样

# Set the base image
FROM rhel7:latest
USER root

# Dockerfile author / maintainer 
MAINTAINER Name <email.id@example.com> 

# Update application repository list and install the Redis server. 
RUN mkdir /usr/local/myapp/
ADD myapp-0.0.1-jar /usr/local/myapp/

RUN java -Dspring.profiles.active=qa -jar /usr/local/myapp/myapp-0.0.1.jar

# Expose default port
EXPOSE 8080

问题:

1) 我添加 JAR 文件的方式是否合适。在我准备好来自上述构建的图像后,它会在 container 上的 /usr/local 中可用吗?

2) 当我使用 docker build 命令构建映像时,构建映像是否默认推送到 docker 存储库中心。

由于 WAR 文件包含凭据,我不想将图像推送到 Docker Hub,但我们想使用 [= 推送到本地 Docker 注册表36=] 分发和推送 docker push

请说明。

回答您的问题:

  1. Docker 建议使用 COPY 指令将单个文件添加到图像中。它将在 /usr/local/myapp/myapp-0.0.1-jar

  2. 的容器内可用
  3. 当您构建映像时,它将在您的本地 docker-host 上可用。它不会离开服务器,除非你明确告诉它。

我想给你的另一个提示是推荐的 docker 图片命名约定,即 [Repository/Author]/[Imagename]:[Version].

因此对于您的图像,它可能被称为 zama/mytestapp:1.0

如果您想将其推送到您的本地注册表中,您必须按照语法 [LocalRegistry:Port]/[Repository/Author]/[Imagename]:[Version].

命名您的图像

因此您的图片现在可能被称为 registry.example.com:5000/zama/mystestapp:1.0

如果您的注册表上有身份验证,您需要先 docker login 然后简单地使用 docker push registry.example.com:5000/zama/mystestapp:1.0 推送图像。