好記性不如爛筆頭,寫筆記是為了回頭看的。
誰要是不小心搜了看了,如有不足之處敬請諒解。
一、准備工作
虛擬機centos7.X,docker1.3.X,Win10 Idea2018.1
默認Idea已經下載了Docker插件
默認虛擬機docker已經裝了jdk
二、開始
1. 打開docker配置文件(docker把端口號2375開放,下面兩種方法都不夠安全,但是測試用用還可以,正式的就不行。)
[root@huangsz ~]# vim /usr/lib/systemd/system/docker.service
在ExecStart=/usr/bin/dockerd-current 后面加上
-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
如下圖所示:

或者
修改一下內容:
[root@huangsz ~]# vim /etc/sysconfig/docker

2. 重新加載配置文件,重啟docker
systemctl daemon-reload
systemctl start docker
3. 查看進程
netstat -tulp

PS:Centos7沒有netstat,所以要先下載。
yum install net-tools
4. 防火牆開放2375端口號
[root@huangsz ~]# firewall-cmd --zone=public --add-port=2375/tcp --permanent
重啟防火牆
[root@huangsz ~]# firewall-cmd --reload
-------------------------- 分割線 割割割割割割割-----------------
Idea連接虛擬機docker
打開小扳手(setting)找到docker,輸入虛擬機ip,不出意外會連接成功的。

5. Springboot項目添加docker-maven-plugin插件
<!--使用docker-maven-plugin插件-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<!--將插件綁定在某個phase執行-->
<executions>
<execution>
<id>build-image</id>
<!--將插件綁定在package這個phase上。也就是說,用戶只需執行mvn package ,就會自動執行mvn docker:build-->
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<!--指定生成的鏡像名-->
<imageName>hsz1992/${project.artifactId}</imageName>
<!--指定標簽-->
<imageTags>
<imageTag>latest</imageTag>
</imageTags>
<!-- 指定 Dockerfile 路徑-->
<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
<!--指定遠程 docker api地址-->
<dockerHost>http://192.168.159.130:2375</dockerHost>
<!-- 這里是復制 jar 包到 docker 容器指定目錄配置 -->
<resources>
<resource>
<targetPath>/</targetPath>
<!--jar 包所在的路徑 此處配置的 即對應 target 目錄-->
<directory>${project.build.directory}</directory>
<!-- 需要包含的 jar包 ,這里對應的是 Dockerfile中添加的文件名 -->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
6. 創建docker文件夾和Dockerfile文件,docker要在src/main里

Dockerfile的內容
FROM java:8 VOLUME /tmp ADD test-mybatis-0.0.1-SNAPSHOT.jar app.jar RUN bash -c 'touch /app.jar' EXPOSE 8082 ENTRYPOINT [ "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar" ]
FROM:選擇的jdk
EXPOSE 是端口號和server.port=8082一致
ADD:第一個jar是打包的項目名 第二個是別名
7.在idea的右邊找到Maven Projects,找到Lifecycle,雙擊package打包,第一次打包比較慢,需要騷騷的等等。

看到以下就說明成功了


8. 創建容器,找到剛剛生成的鏡像,點擊創建容器


Image ID 是打包生成的那個鏡像
Container name 容器名字隨便取
Bind ports 8080是docker對外開放的端口,8082是項目端口(個人理解)
9. 設置好后,啟動容器,啟動成功后去虛擬機查看是否啟動成功
可以看到,容器啟動成功。

10.訪問虛擬機ip+端口號
http://192.168.159.130:8080/test
能訪問,8080是設置容器時對外開放的端口號,而項目的端口是8082

11. Docker查看正在啟動容器docker ps,查看所有容器 docker ps -a,查看鏡像docker images
12.以上步驟就把springboot通過docker遠程部署在虛擬機的docker里了。但是有一個問題我沒有解決,就是每次打包后,需要把容器刪除后再啟動容器才能起作用。如果不刪容器直接啟動的話,還是原來的內容。

13. 查看日志,docker logs -f -t --tail 行數 容器id或者容器名
[root@huangsz ~]# docker logs -f -t --tail 50 499189e519a0

