系統(tǒng):win 10
開發(fā)工具:sts
構(gòu)建工具:maven
docker虛擬機(jī):virtualbox
docker系統(tǒng):CentOS-7-x86_64-Minimal-1511
安裝 docker-ce
- 略過
開啟 docker 遠(yuǎn)程 api
- 修改 docker.server 文件,修改如下:
vim /lib/systemd/system/docker.service-
ExecStart=/usr/bin/dockerd 修改為 ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
開啟docker遠(yuǎn)程api.png
- 重啟 docker
systemctl daemon-reloadsystemctl restart docker
- 驗(yàn)證是否開啟
-
netstat -anp | grep 2375是否顯示docker正在監(jiān)聽2375端口 -
curl 127.0.0.1:2375/info是否返回docker信息 -
telnet (docker centos ip) port在 win10 下是否能 telnet,如:telnet 192.168.0.110 2375如果不能,檢查檢查關(guān)閉防火墻systemctl stop firewalld.service
-
創(chuàng)建 maven 項(xiàng)目,以項(xiàng)目 docker-eureka-server 為例
通過
https://start.spring.io/創(chuàng)建docker-eureka-server-
在項(xiàng)目下創(chuàng)建
src/main/docker,并創(chuàng)建Dockerfile文件,內(nèi)容如下:FROM java:8 VOLUME /tmp ADD docker-eureka-server-0.0.1-SNAPSHOT.jar app.jar RUN bash -c 'touch /app.jar' EXPOSE 8761 ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] -
pom.xml配置docker-maven-plugin插件構(gòu)建docker image并上傳docker server, 插件配置內(nèi)容如下:<!-- 添加docker-maven-plugin插件 --> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.13</version> <configuration> <!-- 配置docker server 位置,否則默認(rèn)127.0.0.1,報(bào)org.apache.http.conn.HttpHostConnectException: Connect to localhost:2375 [localhost/127.0.0.1] failed--> <dockerHost>http://192.168.0.110:2375</dockerHost> <!-- 注意imageName一定要是符合正則[a-z0-9-_.]的,否則構(gòu)建不會(huì)成功 --> <imageName>jteasy/${project.artifactId}:${project.version}</imageName> <!-- Dockerfile 文件位置 --> <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> -
application.yml配置,內(nèi)容如下:server: port: 8761 eureka: instance: hostname: localhost client: registerWithEureka: false fetchRegistry: false serviceUrl: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ -
DockerEurekaServerApplication.java文件內(nèi)容如下:@SpringBootApplication @EnableEurekaServer public class DockerEurekaServerApplication { public static void main(String[] args) { SpringApplication.run(DockerEurekaServerApplication.class, args); } } -
以上完成后,可以進(jìn)行
mvn構(gòu)建了 (注意:?jiǎn)?dòng)docker server),命令如下:-
clean package docker:build -DskipTests
maven Dockerfile 構(gòu)建.png
-
-
構(gòu)建完畢,到
docker server上docker images查看鏡像信息
docker images 鏡像.png -
運(yùn)行鏡像
-
docker run -d -p 8761:8761 jteasy/docker-eureka-server:0.0.1-SNAPSHOT
鏡像運(yùn)行.png
-
注:
-
這一步可能會(huì)出現(xiàn)
iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8761 -j DNAT --to-destination 172.17.0.2:8761 ! -i docker0: iptables: No chain/target/match by that name類似的docker 端口映射錯(cuò)誤異常信息
解決方法:pkill dockeriptables -t nat -Fifconfig docker0 down-
brctl delbr docker0如果沒有brctl命令,執(zhí)行yum -y install bridge-utils.noarch tunctl.x86_64,然后重新執(zhí)行brctl systemctl restart docker
docker maven結(jié)合只需要關(guān)注Dockerfile和pom.xml插件,其他的和普通項(xiàng)目沒差別
看完,放松下!

如有不對(duì)的地方,望多多指教,謝謝!
作者:逐暗者(轉(zhuǎn)載請(qǐng)注明出處)



