【Docker】2、Docker容器

2、容器

自定义容器 Dockerfile
创建一个空目录。cd到新目录,将打包好的jar包和Dockerfile文件放在此文件夹中。制作镜像。创建容器并启动jar包。

1、项目构建使用的maven,需要先在pom.xml中增加docker的plugin:
<plugin>
   <groupId>com.spotify</groupId>
   <artifactId>docker-maven-plugin</artifactId>
   <version>1.1.0</version>
   <configuration>
      <imageName>docker.SprongBoot/${project.artifactId}</imageName>
      <dockerDirectory>src/main/docker</dockerDirectory>
      <resources>
         <resource>
            <targetPath>/</targetPath>
            <directory>${project.build.directory}</directory>
            <include>${project.build.finalName}.jar</include>
         </resource>
      </resources>
   </configuration>
</plugin>

配置完之后运行打包命令:mvn package 打jar包

2、编写Dockerfile文件来构建image
# Docker image for springboot file run
# VERSION 0.0.1
# Author: pibigstar
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER transen <dangchuansen@163.com>
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp 
# 将jar包添加到容器中并更名为app.jar
ADD admin-0.0.1-SNAPSHOT.jar admin.jar 
# 运行jar包
RUN bash -c 'touch /admin.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/admin.jar"]

如果是第一次打包,它会自动下载java 8的镜像作为基础镜像,以后再制作镜像的时候就不会再下载了。
Dockerfile文件是手动用来构建docker image所使用的:

  • FROM(指定基础image)
  • VOLUME 指定了临时文件目录为/tmp。其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp(指定挂载点)。/tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录
  • ADD(从src复制文件到container的dest路径)项目的 jar 文件作为 “app.jar” 添加到容器的
  • ENTRYPOINT(设置container启动时执行的操作本例为执行项目 app.jar。为了缩短 Tomcat 启动时间,添加一个系统属性指向 “/dev/urandom” 作为 Entropy Source
3、构建docker image

在当前创建的目录下执行命令:
docker build -t admin1 .

-t 参数是指定此镜像的tag名
. 最后要加上点

【Docker】2、Docker容器_第1张图片
执行如下命令查看刚制作的镜像
docker images
在这里插入图片描述

4、为运行该镜像生成一个容器
docker run -d -p 9999:9999 app-provider
docker run -d --name app-consumer1 -p 9998:9998 app-consumer
-d参数是让容器后台运行 
-p是做端口映射,将服务器中的8081端口映射到容器中的8080端口
--name是为新生成的容器命名

在这里插入图片描述
执行如下命令查看刚生成的容器
docker ps
在这里插入图片描述

5、然后就可以通过外网ip+端口号访问项目

你可能感兴趣的:(Docker,docker)