记录一下自己操作Docker部署jar的过程,也算是看了好几个别人的步骤的开始
前提,系统别人已经装好了docker容器,jdk,nacos的镜像等
目录
1 生成Dockerfile文件
idea生成项目的jar包,上传在一个文件夹里,并在同级新建一个文件;命令如下
touch Dockerfile
注意,file不要写成File,不然后面执行命令会找不到文件
Dockerfile文件里的内容,找了最简单的 好像就这样
FROM jdk:1.8.0_202 # docker里jdk的镜像
MAINTAINER z # 是谁创建的
ADD user-web-v1.0.0.jar user-web.jar # jar包
EXPOSE 8071 # 代码里对外的端口
ENTRYPOINT ["java","-jar","user-web.jar"] #容器启动之后要执行的命令
2 构建镜像
user-web 可换成别的,最后有点 . 表示当前目录,即Dockerfile所在目录
docker build -t user-web .
构建完了可以查看镜像 命令 docker images
3 运行镜像
找来个这个命令 没有报错 说
docker run -d --name user-web -p 8071:8071 --privileged=true -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime user-web
4 查看镜像
docker ps # 运行的容器
docker ps -a # 查看所有的容器
5 查询容器的日志
docker logs 容器id
可以看到java运行日志,如果报错 代码问题就重新上传jar 删除镜像 容器
6 删除操作
先删除容器 docker rm 容器id 如果容器正在运行 要先停止 命令:docker stop containerid
再删除镜像 docker rmi 镜像id (镜像id通过docker images查看)
7 遇到的问题
1 Dockerfile里的端口 要和 镜像运行的时候 保持一直,我run的时候 就端口写错了 导致一直请求不到服务(低级错误,看了好久才发现)
2 删除容器的的时候 报错 a)
Error response from daemon: You cannot remove a running container...
Stop the container before attempting removal or force remove
先执行停止命令:
docker stop containerid # containerid 容器id
b)另一种情况是有多个,要根据name先删除,然后再根据id删除了
3 附上 我参考的文章: 参考url