一:開啓docker遠端地址
1、修改 /etc/sysconfig/docker文件
vi /etc/sysconfig/docker
在最下面添加一行
DOCKER_OPTS='-H unix:///var/run/docker.sock -H 0.0.0.0:2375'
2、在/usr/lib/systemd/system/docker.service,配置遠程訪問。
vi /usr/lib/systemd/system/docker.service
主要是在[Service]這個部分,修改ExecStart參數,在ExecStart後面添加 $DOCKER_OPTS \
如圖:
3、重啓
systemctl daemon-reload
systemctl restart docker
4、防火牆開放2375端口號
firewall-cmd --zone=public --add-port=2375/tcp --permanent
重啓防火牆
firewall-cmd --reload
5、用瀏覽器訪問查看是否成功
http://192.168.1.47:2375/images/json
二:配置springboot項目的pom.xml
<build> <finalName>${project.artifactId}</finalName> <plugins> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.0.0</version> <!--將插件綁定在某個phase執行--> <executions> <execution> <id>build-image</id> <!--用戶只需執行mvn package ,就會自動執行mvn docker:build--> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> </executions> <configuration> <!--指定dockerfile文件目錄--> <dockerDirectory>${project.basedir}/docker/demo</dockerDirectory> <!--指定生成的鏡像名--> <imageName>ft/${project.artifactId}</imageName> <!--指定標籤--> <imageTags> <imageTag>latest</imageTag> </imageTags> <forceTags>true</forceTags> <!--覆蓋相同標籤鏡像--> <!--指定遠程 docker api地址--> <dockerHost>http://192.168.1.XXX: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> </plugins> </build>
三:編寫dockerfile文件
# Docker image for springboot file run # 基礎鏡像使用java FROM java:8 # 作者 MAINTAINER jzq # VOLUME 指定了臨時文件目錄爲/tmp。 # 其效果是在主機 /var/lib/docker 目錄下創建了一個臨時文件,並鏈接到容器的/tmp VOLUME /tmp # 將jar包添加到容器中並更名爲app.jar ADD ft-service-demo.jar app.jar # 運行jar包 RUN bash -c 'touch /app.jar' ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
注:VOLUME 指定了臨時文件目錄爲/tmp。其效果是在主機 /var/lib/docker 目錄下創建了一個臨時文件,並鏈接到容器的/tmp。該步驟是可選的,如果涉及到文件系統的應用就很有必要了。/tmp目錄用來持久化到 Docker 數據文件夾,因爲 Spring Boot 使用的內嵌 Tomcat 容器默認使用/tmp作爲工作目錄
項目的 jar 文件作爲 “app.jar” 添加到容器的
ENTRYPOINT 執行項目 app.jar。爲了縮短 Tomcat 啓動時間,添加一個系統屬性指向 “/dev/./urandom” 作爲 Entropy Source
如果是第一次打包,它會自動下載java 8的鏡像作爲基礎鏡像,以後再製作鏡像的時候就不會再下載了。
四:maven打包即可
如果報錯:
container_linux.go:247: starting container process caused "process_linux.go:258: applying cgroup configuration for process caused \"Cannot set property TasksAccounting, or unknown property.\"" /usr/bin/docker-current: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "process_linux.go:258: applying cgroup configuration for process caused \"Cannot set property TasksAccounting, or unknown property.\"".
解決:主要原因還是centos系統版本兼容性問題,將系統做更新升級,即可解決:
1、執行:yum update
2、重啓docker:systemctl restart docker
3、重新maven打包