一、安装部署docker
1.1 Ubuntu(使用 apt-get 进行安装)
# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg# step 2: 信任 Docker 的 GPG 公钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg# Step 3: 写入软件源信息
echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \sudo tee /etc/apt/sources.list.d/docker.list > /dev/null# Step 4: 安装Docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# apt-cache madison docker-ce
# docker-ce | 17.03.1~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# docker-ce | 17.03.0~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# Step 2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.1~ce-0~ubuntu-xenial)
# sudo apt-get -y install docker-ce=[VERSION]
1.2 CentOS (使用 yum 进行安装)
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils# Step 2: 添加软件源信息
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# Step 3: 安装Docker
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin# Step 4: 开启Docker服务
sudo service docker start# 注意:
# 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。
# vim /etc/yum.repos.d/docker-ce.repo
# 将[docker-ce-test]下方的enabled=0修改为enabled=1
#
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
# Loading mirror speeds from cached hostfile
# Loaded plugins: branch, fastestmirror, langpacks
# docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
# docker-ce.x86_64 17.03.1.ce-1.el7.centos @docker-ce-stable
# docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
# Available Packages
# Step2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)
# sudo yum -y install docker-ce-[VERSION]
二、准备dockerfile文件与脚本与基础镜像
2.1 创建准备目录和映射目录
mkdir -p /doc/java.docker #准备目录
mkdir /app #docker映射目录
cd /doc/java.docker
2.2 准备Dockerfile文件
vim Dockerfile
# 基础镜像(推荐轻量级JRE)
FROM openjdk:17# 创建挂载目录并设置权限
RUN mkdir -p /app/jars && useradd -m appuser
WORKDIR /app
COPY entrypoint.sh ./# 声明环境变量(支持动态Jar名)
ENV JAR_NAME="app.jar" \JVM_OPTS="-Xms512m -Xmx1024m"# 配置非root用户运行
RUN chown -R appuser:appuser /app && chmod +x entrypoint.sh
USER appuser# 启动命令
ENTRYPOINT ["/app/entrypoint.sh"]
2.3 准备启动脚本
vim entrypoint.sh
#!/bin/bash
exec java ${JVM_OPTS} -jar /app/jars/${JAR_NAME}
2.4 准备基础镜像
通过docker官网或其他途径下载openjdk的基础镜像(这里使用的是openjdk17)
使用tag将镜像重新命名
docker tag registry.zhijiasoft.com/public/openjdk:24-ea-17-jdk-slim-bullseye openjdk:17
三、操作流程
3.1构建镜像与启动容器
# 构建镜像
docker build -t myapp:dynamic .# 启动容器(挂载Jar目录)
docker run -d --name myapp -v /app/jars:/app/jars -v /app/logs:/app/logs -e JAR_NAME="app-v1.0.jar" -p 8080:8080 myapp:dynamicdocker run -d --name myapp \-v /app(宿主机)/jars:/app/jars \ # Jar包映射路径-v /app(宿主机)/logs:/app/logs \ # 日志持久化-e JAR_NAME="app-v1.0.jar" \ # 指定初始Jar名-p 8080:8080 \myapp:dynamic
3.2 更新jar包操作
3.2.1 通过修改包的版本来更新版本
# 1. 上传新Jar到宿主机目录(如/app-v2.0.jar)
cp app-v2.0.jar /宿主机/jars/# 2. 修改环境变量指向新文件
docker update --env JAR_NAME="app-v2.0.jar" myapp# 3. 重启容器生效
docker restart myapp
3.2.2 通过更换同名文件来更新版本
cd /app/jars
mv app-v1.0.jar app-v1.0.jar.bak
cp -a ?/new.app.jar ./app-v1.0.jar
docker restart myapp