1,首先生成jar包
生成的jar包位置
2,把jar包上传到服务器
比如直接cp到/opt/java_app_docker目录下
在相同目录下创建Dockerfile
sudo vim Dockerfile
# 拉取jdk8作为基础镜像
FROM java:8
# 作者
MAINTAINER zbdemo <zbdemo@163.com>
# 添加jar到镜像并命名为user.jar
ADD user-0.0.1-SNAPSHOT.jar user.jar
# 镜像启动后暴露的端口
EXPOSE 8001
# jar运行命令,参数使用逗号隔开
ENTRYPOINT ["java","-jar","user.jar"]
3,然后使用命令打包
docker build -t user .
user表示镜像名称
最后的(点.)表示Dockerfile在当前目录
打包完成后使用docker images查看镜像
4,然后使用docker images 查看生成的镜像
5,启动
使用docker run命令创建并运行容器:
docker run -d --name user -p 8001:8001 user
命令 | 功能 |
---|---|
docker run | 创建并启动容器 |
–name | 指定一个容器名称 |
-d | 后台运行容器,并返回容器ID |
-p | 指定端口 |
user | 需要启动的镜像(名称+版本)不指定版本默认最新版本 |
: | 符号左边为宿主机,右边为容器空间 |
6,启动完成,查看启动日志:
docker logs -f -t user
jar日志启动成功,查看容器:
docker ps
7,测试验证
访问一下,测试效果:
localhost:8001/hello/hello
================================================================
进化操作
================================================================
进化:可复用容器
首先停止并删除刚刚创建的容器和镜像
停止容器:
docker stop user
删除容器:
docker rm user
删除镜像:
docker rmi user
修改Dockerfile文件
sudo vim Dockerfile
修改后内容如下(给jar安排了一个目录,方便挂载到宿主机):
# 拉取jdk8作为基础镜像
FROM java:8
# 作者
MAINTAINER zbdemo <zbdemo@163.com>
# 添加jar到镜像并命名为user.jar
ADD user-0.0.1-SNAPSHOT.jar /app/user.jar
# 镜像启动后暴露的端口
EXPOSE 8001
# jar运行命令,参数使用逗号隔开
ENTRYPOINT ["java","-jar","/app/user.jar"]
然后在/opt/java_app_docker文件夹下面创建jar挂载目录
sudo mkdir app
把你的jar包cp一份到宿主机/opt/java_app_docker/app目录下并改名为user.jar 这里一定要在app目录下存放你的jar,不然容器启动会失败,找不到jar
打包镜像-创建并运行容器
打包镜像:
docker build -t user .
创建并运行容器:
docker run -d --name user -p 8001:8001 -v /opt/java_app_docker/app:/app user
命令解释如下:
命令 | 功能 |
---|---|
docker run | 创建并启动容器 |
–name | 指定一个容器名称 |
-d | 后台运行容器,并返回容器ID |
-p | 指定端口 |
user | 需要启动的镜像(名称+版本)不指定版本默认最新版本 |
-v | 挂载目录到宿主机 |
: | 符号左边为宿主机,右边为容器空间 |
这样的方式启动完成之后,更新服务时只需要更换宿主机/opt/java_app_docker/app目录下的jar包,然后重启容器即可实现更新,省略了每次更新删除打包创建等过程