1. 目录结构
1.1 应用目录
事先下载jdk安装包并保存到本地
2.2 镜像目录
2. 编写Dockerfile
2.1 设置工作目录
# 设置工作目录
WORKDIR ${WORK_DIR}
# 文件拷贝:将所有本地文件拷贝到容器目录
COPY ./jdk ${WORK_DIR}/jdk
2.2 解决时间同步问题(设置时区)
# 解决时间同步问题
RUN rm -f /etc/localtime && ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
2.3 核心逻辑
- 创建用户
- 安装基础包
- 安装JDK
- 安装证书
RUN groupadd ${SYS_USER_GROUP} && \
# 创建用户admin并添加到admin用户组下
useradd -m -g ${SYS_USER_GROUP} ${SYS_USER} && \
# 创建目录
mkdir -p ${SRC_APP_DIR} ${SRC_LOG_DIR} ${SRC_DATA_DIR} ${SRC_SERVER_DIR} ${TGT_DIR} && \
# 安装基础包
yum install -y openssh-server cronie wget && \
# 安装JDK \
tar -zxvf ${WORK_DIR}/jdk/jdk-8u391-linux-x64.tar.gz -C ${SRC_SERVER_DIR} && \
# 安装证书
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N '' && \
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N '' && \
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N '' && \
# 删除JDK安装包
rm -r ${WORK_DIR}/jdk
- 环境变量(ENV)
- SYS_USER_GROUP:系统用户组
- SYS_USER:系统用户
- 参数(ARG)
- SRC_DIR:源根目录
- SRC_APP_DIR:源应用目录
- SRC_LOG_DIR:源日志目录
- SRC_DATA_DIR:源数据目录
- SRC_SERVER_DIR:源服务目录
- TGT_DIR:目标根目录
2.4 设置环境变量
# 设置JAVA_HOME
ENV JAVA_HOME "$SRC_SERVER_DIR/jdk1.8.0_391"
# 设置PATH
ENV PATH "$PATH:$JAVA_HOME/bin"
3. 构建镜像
3.1 构建镜像
docker build -t centos7-jdk-1.0 -f ./Dockerfile_centos7_jdk .
3.2 导出镜像
docker save -o /images/centos7-jdk-1.0.tar centos7-jdk-1.0