前提
你得安装docker,没有安装的可以看看这篇文章
编写dockerfile
这个位置最好和我一样,不然后面打包成镜像可能出问题(找不到jar包)
FROM openjdk:8-jdk-slim
MAINTAINER JacksonNing
COPY /target/iec104-1.0.0-SNAPSHOT.jar /iec104.jar
EXPOSE 8082
ENTRYPOINT ["java","-jar","/iec104.jar"]
application.yml
server:
port: 8082
idea将项目打包成jar
先clean再package
注意程序只能有一个main方法,不然打包会报错
以下代表打包成功
使用docker打包成镜像
1、在dockerfile的目录下运行终端
docker build -t iec104:v1.0 .
2、查看是否有镜像
docker images
3、运行容器
docker run -itd -p 8081:8081 --name iec104 iec104:v1.0
或者推荐这个,因为我的这个项目是想要容器能够监听到宿主机的端口,我使用以下命令即可
be268578aa6c 是镜像id
docker run --net=host -d be268578aa6c
导出镜像
1、将正在运行的docker容器打包成image镜像
docker commit 4f2a09831d74 iec104:v1.0
docker commit 0a3b26324050[容器ID] mysql:1.0 [名称:版本号]
2、把刚刚打包好的镜像保存成 tar 文件
docker save iec104:v1.0 -o /data/home/nsx/Documents/iec104.tar
docker save 镜像名:版本号 -o /路径/保存的包名.tar
3、将打包好的镜像拷贝到新机器上面,执行load命令解压
docker load < iec104.tar #执行命令
常用命令
docker tag 95bfbad9e10c iec104:v1.0 #打标签
docker exec -it 669fd6e56323 bash #进入容器
docker logs 52e57ee5e7c6 #打印容器的日志
docker stop 52e57ee5e7c6 #暂停容器
docker rm -f 52e57ee5e7c6 #删除容器
docker build -t iec104:v1.0 . #打包镜像
docker run -itd -p 8082:8082 --name iec104 iec104:v1.0 #启动镜像
docker commit 4f2a09831d74 iec104:v1.0 #将正在运行的docker容器打包成image镜像
docker save iec104:v1.0 -o /data/home/nsx/Documents/iec104.tar #把打包好的镜像保存成 tar 文件
docker run --net=host -d be268578aa6c #使用host网络模式启动,解决docker容器内无法访问宿主机的资源的问题
参考:
https://blog.csdn.net/qq_28880087/article/details/114575736?spm=1001.2014.3001.5506
https://blog.csdn.net/springhub/article/details/127482319?spm=1001.2014.3001.5506