前提

  1. docker已装好.

开始表演

  1. 开放docker对应端口
开启远程访问,修改docker服务文件,在linux上执行下面
	vim /lib/systemd/system/docker.service
	修改ExecStart这行(开启2375端口让外部访问docker)
	ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

image.png
2. 重新加载配置文件

systemctl daemon-reload
重启服务
systemctl restart docker.service
查看端口是否开启
netstat -nlpt 如果没有netstat命令:yum install net-tools
直接curl看是否生效
curl http://127.0.0.1:2375/info
  1. 查看是否开启2375防火墙
查看进程
	#netstat -tulp
	Centos7没有netstat,所以要先下载。
	#yum install net-tools
	防火墙开放2375端口号
	#firewall-cmd --zone=public --add-port=2375/tcp --permanent
	重启防火墙
	#firewall-cmd --reload

IDEA设置

  1. 首先查看idea是否有安装docker插件,如果没有在插件里安装即可
    image.png
  2. 镜像配置
    image.png
  3. 这个时候,你可以在service中看到docker的信息,点击连接
    image.png
这个时候IDEA下方会有docker按钮,进入点击连接Connect
	Images:镜像
		可以通过 create Contains 创建容器
			Container name 容器名称
			Run options 添加其他一些命令(如-p 8080:8080)
			通过Contained preview 查看创建容器的命令
	Contains:容器
		可以操作容器

关键

实现IDEA到服务器部署
	1.在IDEA中开发代码
	2.代码打jar包
	3.部署到linux上
	4.编写Dockerfile
	5.构建镜像
	6.运行容器
	
自动生成镜像并推送到仓库maven插件


<properties>
	<docker.image.prefix>tao</docker.image.prefix>
</properties>

<plugin>
	<groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>1.0.0</version>
    <configuration> <!--相当于创建Dockerfile-->
    	<!--镜像名称 (tao/test) project.artifactId表示项目名称-->
    	<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
    	<!--指定标签Tag 镜像版本-->
    	<imageTags>
           <imageTag>${project.version}</imageTag>
           <imageTag>latest</imageTag>
        </imageTags>
    	<!--基础镜像jdk 1.8-->
    	<baseImage>java</baseImage>
    	<!--制作者的信息-->
    	<maintainer>hetao</maintainer>
    	<!--切换到工作目录-->
    	<workdir>/ROOT</workdir>
    	
    	<!--<cmd>["java","-version"]</cmd>-->
        <!--project.build.finalName会取springboot打包后target目录下的jar名称-->
    	<entryPoint>["java","-jar","${project.build.finalName}.jar"]</entryPoint>
    	
    	<!--指定Dockerfile路径
 			<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
		-->
        <!--指定远程docker api地址 如果使用的钥匙连接加s->https://ip:2375-->
        <dockerHost>http://ip:2375</dockerHost>
        <!--复制jar包到docker容器指定的目录配置-->
        <resources>
        	<resource>
            	<targetPath>/ROOT</targetPath>
                <!--用于指定需要复制的根目录,${project.build.directory}表示target目录-->
                <directory>${project.build.directory}</directory>
                <!--用于指定需要复制的文件,${project.build.finalName}.jar表示打包后的jar文件-->
                <include>${project.build.finalName}.jar</include>
            </resource>
        </resources>
    </configuration>
</plugin>

这里相当于
FROM java
MAINTAINER "hetao"
WORKDIR	/ROOT
ADD /ROOT/test-docker-01-0.0.1-SNAPSHOT.jar /ROOT/
ENTRYPOINT ["java","-jar","test-docker-01-0.0.1-SNAPSHOT.jar"] 
<!--CMD ["java","-version"]-->
<!--通过maven 直接打包完成(放</configuration>后)-->
<executions>
	<!--执行 maven package时 执行:maven clean package docker:build-->
	<execution>
		<id>build-image</id>
		<phase>package</phase>
		<goals>
			<goal>build</goal>
		</goals>
	</execution>
</executions>

注意:如果镜像名称已经存在 会把存在的镜像改成none

配置好后,maven在打包时会打成镜像上传至docker

image.png

发布到容器

image.png