有关Docker构建和本地Docker Repo的问题

时间:2017-11-09 12:37:42

标签: docker rhel7

我正在尝试使用以下命令创建一个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文件的方式是否正常。在我从上面的构建中准备好图像之后,/usr/local上的container内是否可以使用它。

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

由于WAR文件包含凭据,我不想将映像推送到Docker Hub,但我们希望使用Docker分发推送到我们的本地Docker注册表并使用docker push推送。

请澄清。

1 个答案:

答案 0 :(得分:1)

回答你的问题:

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

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

  4. 我想给你的另一个提示是建议的泊坞窗图像命名约定,即[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推送图片。