docker 安装
请参考这篇文档:juejin.cn/post/709072…
docker 开启远程访问
参考:www.cnblogs.com/hongdada/p/…
停止docker服务
为了防止restart docker服务出现错误,保险起见,最好先停止docker服务,再修改配置文件;停止docker之前要先停止正在运行的容器,否则后面启动容器也有可能出错。 停止某个容器:
docker stop [container_id]
停止所有容器:
docker stop `docker ps -aq`
然后停止docker服务:
systemctl stop docker
docker配置文件修改
为了使用HTTP方式让IDEA连上服务器上的docker,需修改docker的配置文件(实现方式有多种,这只是其中之一),修改内容如下: 1.修改配置文件:
vim /usr/lib/systemd/system/docker.service
2.修改Execstart 这行内容,将其替换为以下内容,目的是开放2375端口,能进行HTTP远程连接:
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
刷新配置并重启
systemctl daemon-reload && systemctl restart docker
防火墙开启2375端口(防火墙关闭无须此操作)
开放端口:
firewall-cmd --zone=public --add-port=2375/tcp --permanent
防火墙reload:
firewall-cmd --reload
测试
浏览器输入ip:2375/version,出现json则代表开启成功了
maven项目打包
打包插件
在pom文件中添加springboot打包插件:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
docker打包插件配置
<docker.image.prefix>springboot</docker.image.prefix>
<!-- Docker maven plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.2</version>
<configuration>
<dockerHost>http://192.168.253.141:2375</dockerHost>
<!--镜像名字 不能含有大写字母-->
<imageName>${project.artifactId}</imageName>
<!--build 的時候镜像的tag,但是会保留latest-->
<imageTags>
<tag>${project.version}</tag>
</imageTags>
<!--dockerfile所在位置-->
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<!--target所在位置-->
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<!--将jar包和Dockerfile放在统一目录-->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
maven打包
先clean 再 package
docker镜像构建
执行插件命令build镜像
日志输出:
[INFO] Scanning for projects...
[INFO] Building image spring-boot-docker
Step 1/4 : FROM openjdk:8-jdk-alpine
---> a3562aa0b991
Step 2/4 : VOLUME /tmp
---> Running in c8957155a74b
Removing intermediate container c8957155a74b
---> 3bd27410b9d3
Step 3/4 : ADD spring-boot-docker-1.0.jar app.jar
---> b85dfbb03396
Step 4/4 : ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
---> Running in 43839b2b63b9
Removing intermediate container 43839b2b63b9
---> 6bf02a19146c
ProgressMessage{id=null, status=null, stream=null, error=null, progress=null, progressDetail=null}
Successfully built 6bf02a19146c
Successfully tagged spring-boot-docker:latest
[INFO] Built spring-boot-docker
[INFO] Tagging spring-boot-docker with 1.0
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.180 s
[INFO] Finished at: 2022-10-14T15:43:46+08:00
[INFO] ------------------------------------------------------------------------
docker机器上查看build的镜像
可以看到有两个镜像,一开始build的时候应该build的latest ,1.0这个是在latest的基础上tag出来的。
[root@localhost ~]# docker images | grep docker
spring-boot-docker 1.0 6bf02a19146c 6 minutes ago 122MB
spring-boot-docker latest 6bf02a19146c 6 minutes ago 122MB
运行构建的镜像
idea 链接docker
下载插件
连接docker
运行镜像
创建成功后访问
访问地址:ip:8080