1、下载jdk/jre [官网下载地址](https://www.oracle.com/java/technologies/downloads/archive/) ,由于服务器上只需要java运行时环境,所以这里选择下载jre,如下图下载需要的对应的版本: 2、删除jre中无用的文件 ``` #解压 tar -zxvf jre-8u202-linux-x64.tar.gz cd jre1.8.0_202 #删除文本文件 rm -rf COPYRIGHT LICENSE README release THIRDPARTYLICENSEREADME-JAVAFX.txt THIRDPARTYLICENSEREADME.txt Welcome.html #删除其他无用文件 rm -rf lib/plugin.jar \ lib/ext/jfxrt.jar \ bin/javaws \ lib/javaws.jar \ lib/desktop \ plugin \ lib/deploy* \ lib/*javafx* \ lib/*jfx* \ lib/amd64/libdecora_sse.so \ lib/amd64/libprism_*.so \ lib/amd64/libfxplugins.so \ lib/amd64/libglass.so \ lib/amd64/libgstreamer-lite.so \ lib/amd64/libjavafx*.so \ lib/amd64/libjfx*.so #将解压文件重新压缩 tar -zcvf jre-8u202.tar.gz jre/ ``` 3、制作Dockerfile文件 ``` # 使用CentOS 8作为基础镜像 FROM centos:8 # 维护者 MAINTAINER author 小蚂蚁 # 创建一个新目录来存储jdk文件 RUN mkdir /usr/local/java # 将jdk压缩文件复制到镜像中,它将自动解压缩tar文件 ADD jre-8u202.tar.gz /usr/local/java/ # 设置时区 RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # 设置环境变量 ENV LANG=en_US.UTF-8 LANGUAGE=en_US.UTF-8 ENV JAVA_HOME /usr/local/java/jre1.8.0_202 ENV PATH $JAVA_HOME/bin:$PATH # VOLUME 指定了临时文件目录为/tmp # 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp VOLUME /tmp # 工作目录 WORKDIR /opt/ ``` 4、构建镜像 ``` docker build -t jre:8u202-centos8 . ``` 5、创建容器 ``` docker run -it --name docker_jre8 jre:8u202-centos8 ``` ``` docker run -i -t jre:8u202-centos8 /bin/bash 查看版本: [root@3a881fab5716 opt]# java -version java version "1.8.0_202" Java(TM) SE Runtime Environment (build 1.8.0_202-b08) Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode) ``` 6、上传 ``` # 打标签 docker tag jre:8u202-centos8 192.168.10.101:8001/xiaomayi-base/jre:8u202-centos8 # 上传镜像 docker push 192.168.10.101:8001/xiaomayi-base/jre:8u202-centos8 ``` 特别备注: 目标服务器非 root 用户权限问题解决: ``` WARNING! Using --password via the CLI is insecure. Use --password-stdin. permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/auth": dial unix /var/run/docker.sock: connect: permission denied permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/create?fromImage=manage.harbor.djangoadmin.cn%2Fxiaomayi%2Fxiaomayi-elevue&tag=dev-137": dial unix /var/run/docker.sock: connect: permission denied ``` 解决办法:把我们当前的用户添加到docker组中就可以了; 参考地址:https://blog.csdn.net/weixin_43321041/article/details/120399194 chmod 666 /var/run/docker.sock 或者 权限问题: chmod 600 ~/.docker/config.json chmod 700 ~/.docker sudo chown $USER:$USER ~/.docker sudo chown $USER:$USER ~/.docker/config.json 应用部署服务器需要设置docker配置: ``` vim /usr/lib/systemd/system/docker.service --insecure-registry manage.harbor.xiaomayicloud.com --insecure-registry 192.168.10.202:8001 chmod 666 /var/run/docker.sock ```