怎么用docker将项目打包成镜像并导出给别人适用 (dockerfile)

前提

你得安装docker,没有安装的可以看看这篇文章

编写dockerfile

怎么用docker将项目打包成镜像并导出给别人适用 (dockerfile)_第1张图片
这个位置最好和我一样,不然后面打包成镜像可能出问题(找不到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

怎么用docker将项目打包成镜像并导出给别人适用 (dockerfile)_第2张图片
先clean再package

注意程序只能有一个main方法,不然打包会报错

以下代表打包成功
怎么用docker将项目打包成镜像并导出给别人适用 (dockerfile)_第3张图片

使用docker打包成镜像

1、在dockerfile的目录下运行终端
怎么用docker将项目打包成镜像并导出给别人适用 (dockerfile)_第4张图片

docker build -t iec104:v1.0 .

怎么用docker将项目打包成镜像并导出给别人适用 (dockerfile)_第5张图片
2、查看是否有镜像

docker images

在这里插入图片描述
3、运行容器

docker run -itd -p 8081:8081 --name iec104 iec104:v1.0

怎么用docker将项目打包成镜像并导出给别人适用 (dockerfile)_第6张图片
或者推荐这个,因为我的这个项目是想要容器能够监听到宿主机的端口,我使用以下命令即可

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

你可能感兴趣的:(docker,容器,运维)