安装docker
查看我之前的教程最简单Centos7安装Docker
开启 docker 的 tcp 远程访问
```
# 1、编辑docker.service
vim /usr/lib/systemd/system/docker.service
# 2、修改ExecStart属性,在后面添加-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
# 3、刷新配置,重启服务
systemctl daemon-reload
systemctl restart docker
```

**打开浏览器,在地址栏中输入`http://Linux的ip地址:2375/version`,出现如下图片中的相关信息,则表示成功开启 docker 的 tcp 远程访问**

idea安装 Docker 插件
1.1、在顶部工具栏中找到 File → Settings
1.2、找到 Plugins,点击 “Browse repositories” 按钮
1.3、在搜索框输入 Docker,选择 Docker 插件,点击 “Install” 按钮进行安装,然后点击 “Close” 按钮
3.2、可以看到 Docker 插件已经被我们安装上了,然后点击 "Apply" 按钮,再点击 "OK" 按钮,最后重启 IDEA 即可生效
配置 Docker 服务
2.1、在顶部工具栏中找到 File → Settings,进入到 Settings 设置页面中,找到 Build,Execution,Deployment → Docker,点击 "+",添加一个 docker 连接
2.2、在 Engine API URL 中输入你的 docker 服务地址,格式为:tcp://Linux(即: docker 宿主机) 的 ip 地址: 2375,配置好后,idea 会自动检测,然后在左下方输出 "connection successful",然后点击 "Apply" 按钮,再点击 "OK" 按钮
2.3、选择 IDEA 的 Docker 窗口,点击 "绿色运行按钮",连接 Linux 服务器上的 docker,连接成功之后,会显示 Containers 和 Images,即:docker 中已有的容器和镜像
通过 Docker 插件构建镜像
1、首先,在项目的 src/main 路径下,创建一个 docker 目录,并在 docker 目录下新建一个 Dockerfile 文件,其内容如下所示:
# Base images 基础镜像
FROM java:8u111
#MAINTAINER 维护者信息
MAINTAINER liboshuai<liboshuai01@gmail.com>
#VOLUME:挂载目录
VOLUME /temp
#ADD 将microservicecloud-eureka-7001-1.0-SNAPSHOT.jar文件将拷贝到容器中,默认拷贝到根路径下
#注意:microservicecloud-eureka-7001-1.0-SNAPSHOT.jar的名称前的microservicecloud-eureka-7001对应<artifactId>标签中的内容,1.0-SNAPSHOT对应<version>标签中的内容
ADD ./target/polaris-gateway-1.0-SNAPSHOT.jar app.jar
RUN bash -c "touch /app.jar"
#EXPOSE 容器暴露端口
EXPOSE 8080
#ENTRYPOINT 应用启动命令 参数设定
#由于tomcat的session id的生成主要通过java.security.SecureRandom生成随机数来实现,导致启动过程很慢
#通过-Djava.security.egd=file:/dev/./urandom参数可以加快随机数产生过程
ENTRYPOINT ["java", "-Dspring.profiles.active=prod", "-jar", "/app.jar"]
2、创建 Dockerfile 启动项
2.1、选择 Edit Configurations…
2.2、点击 "+",找到 Docker,选择 Dockerfile
2.3、配置 Dockerfile 启动项的相关信息
3、在 pom.xml 文件中添加 SpringBoot 的 maven 插件,如果不添加,运行容器时,会报错,错误信息为:no main manifest attribute, in /xxx.jar
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!-- 项目基于maven pom多模块的开发的,需要设置goal-repackage属性为true,否则打包后文件依赖文件没有一起打包,然后镜像内没有可以运行的程序文件 -->
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
</plugins>
</build>
4、执行 mvn clean install 命令,打包项目并安装到本地的 maven 仓库中
5、在本地 maven 仓库中找到刚才安装好的 microservicecloud-eureka-7001-1.0-SNAPSHOT.jar,拷贝到项目的 src/main/docker 目录下,并运行 Docker 启动项,Docker 插件会自动帮我们构建项目镜像,并启动容器实例(idea要用管理员权限启动,并且当前项目要在C盘的当前用户目录下)
因为我们在 Dockerfile 文件中配置了ADD microservicecloud-eureka-7001-1.0-SNAPSHOT.jar app.jar,而 Dockerfile 文件是放在项目的 src/main/docker 目录下,所以它会在当前目录(即:docker目录)下寻找microservicecloud-eureka-7001-1.0-SNAPSHOT.jar
6、访问项目