文章目录

  • 一. 制作centos7-jdk8-tomcat镜像
  • 1. 准备jdk8和tomcat
  • 2. Dockerfile文件
  • 3. 构建镜像
  • 4. 启动镜像,访问
  • 5. push镜像到dockerHub
  • 二. 制作更小的centos7-jre8镜像(java运行环境)
  • 1. 准备jre8
  • 2. Dockerfile文件
  • 3. 构建镜像
  • 4. 启动镜像,进入镜像
  • 5. push镜像到dockerHub
  • 三. 制作centos7-jdk8镜像(忽略)
  • 3.1 下载jdk8
  • 3.2 Dockerfile
  • 3.3 build 并且 push镜像
  • 四. 制作centos7-java11镜像(忽略)
  • 1. Dockerfile
  • 4.2 build 并且 push镜像
  • 4.3 测试
  • 五. openjdk
  • 5.1 java8
  • 5.2 制作centos7-java8(最新)
  • 5.2.1 搜索
  • 5.2.2 Dockerfile
  • 5.2.3 build&push多平台镜像
  • 5.2.4 测试
  • 5.2.5 使用
  • 5.3 制作centos7-java11(最新)
  • 5.3.1 搜索
  • 5.3.2 Dockerfile
  • 5.3.3 build&push多平台镜像
  • 5.3.4 测试
  • 5.3.5 使用


一. 制作centos7-jdk8-tomcat镜像

1. 准备jdk8和tomcat

[root@master01 ~]# mkdir -p ~/images/centos7-jdk8-tomcat
[root@master01 ~]# cd ~/images/centos7-jdk8-tomcat
#下载好jdk和tomcat放在里面
[root@master01 centos7-jdk8-tomcat]# ls
apache-tomcat-8.5.37.tar.gz  Dockerfile  jdk-8u191-linux-x64.tar.gz

2. Dockerfile文件

[root@master01 centos7-jdk8-tomcat]# vi Dockerfile

#复制

FROM centos:centos7.6.1810

MAINTAINER wanfei www19930327@126.com

ADD jdk-8u191-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-8.5.37.tar.gz /usr/local/

ENV JAVA_HOME /usr/local/jdk1.8.0_191
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.37
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin

EXPOSE 8080

CMD ["/usr/local/apache-tomcat-8.5.37/bin/catalina.sh","run"]

参数说明

  • FROM: 指定基础镜像,并且必须是第一条指令
  • MAINTAINER: 指定作者
  • RUN: 运行指定的命令
  • ADD: 复制命令,把文件复制到镜像中,压缩文件会自动解压。
  • ENV: 设置环境变量
  • EXPOSE: 功能为暴漏容器运行时的监听端口给外部
  • CMD: 指定容器启动时运行的命令

3. 构建镜像

#后面的 . 指定镜像构建上下文
[root@master01 centos7-jdk8-tomcat]# docker build -t www19930327/centos7-jdk8-tomcat .

-t 设置tag名称, 命名规则registry/image:tag(若不添加版本号,默认latest
. 指定镜像构建上下文

4. 启动镜像,访问

[root@master01 centos7-jdk8-tomcat]# docker images
REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE
www19930327/centos7-jdk8-tomcat      latest              cd207887781a        4 minutes ago       612MB

[root@master01 centos7-jdk8-tomcat]# docker run -d -p 8083:8080 www19930327/centos7-jdk8-tomcat
3741068b00e2f274ec705dd28a294e1045471cbe03ce3aa1567fb7152462f726

-d 后台运行
-p 端口映射 宿主机port : 容器port

dockerfile构建java镜像 docker制作jdk镜像_容器

5. push镜像到dockerHub

#输入账号,密码登录dockerHub
[root@master01 centos7-jdk8-tomcat]# docker login -u xxxxxx -p xxxxxx
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

[root@master01 centos7-jdk8-tomcat]# docker push www19930327/centos7-jdk8-tomcat:latest
The push refers to repository [docker.io/www19930327/centos7-jdk8-tomcat]
b7b490d50eed: Pushed 
dbe684e47d60: Pushed 
dc849de7cf5b: Pushed 
f4796ab1c9c9: Mounted from library/centos 
latest: digest: sha256:3160ee8242a9cbbe1889139c9ccda0e85dfacc38d1b9b04ced3031b08fa386f6 size: 1160

二. 制作更小的centos7-jre8镜像(java运行环境)

1. 准备jre8

[root@master01 ~]# mkdir -p ~/images/centos7-jre8
[root@master01 ~]# cd ~/images/centos7-jre8
#下载好jre放在里面
[root@master01 centos7-jre8]# ls
Dockerfile  jre-8u181-linux-x64.tar.gz

2. Dockerfile文件

[root@master01 centos7-jre8]# vi Dockerfile

#复制

FROM centos:centos7.6.1810

MAINTAINER wanfei www19930327@126.com

ADD jre-8u181-linux-x64.tar.gz /usr/local/

ENV JRE_HOME /usr/local/jre1.8.0_181
ENV PATH $PATH:$JRE_HOME/bin

3. 构建镜像

[root@master01 centos7-jre8]# docker build -t www19930327/centos7-jre8 .

[root@master01 centos7-jre8]# docker images
REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE
www19930327/centos7-jre8             latest              8efac9120b1c        5 seconds ago       419MB

4. 启动镜像,进入镜像

[root@master01 centos7-jre8]# docker run -d -it www19930327/centos7-jre8 /bin/bash
44480c18e449049c93f3a3e31e4959ab236d9fec6d9c3610edf3456ef20c25e2
[root@master01 centos7-jre8]# docker ps
CONTAINER ID        IMAGE                               COMMAND                  CREATED             STATUS                          PORTS                       NAMES
44480c18e449        www19930327/centos7-jre8            "/bin/bash"              4 seconds ago       Up 3 seconds                                                adoring_haibt

#进入容器
[root@master01 centos7-jre8]# docker exec -it 44480c18e449 /bin/bash
[root@44480c18e449 /]# java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
[root@44480c18e449 /]# javac -version
bash: javac: command not found

注意:创建容器的时候一定要使用 -it /bin/bash这种方式,要不然jdk的容器起不来。

5. push镜像到dockerHub

[root@master01 centos7-jre8]# docker push www19930327/centos7-jre8:latest
The push refers to repository [docker.io/www19930327/centos7-jre8]
fe28e6e0c5b2: Pushed 
f4796ab1c9c9: Mounted from www19930327/centos7-jdk8-tomcat 
latest: digest: sha256:6a26a7d254910ece66721be37993a1464a36b8e59415838db588019c2aaff080 size: 741

三. 制作centos7-jdk8镜像(忽略)

3.1 下载jdk8

jdk8下载地址 https://www.oracle.com/java/technologies/downloads/#java8

dockerfile构建java镜像 docker制作jdk镜像_dockerfile构建java镜像_02

下载完成放到下面目录

dockerfile构建java镜像 docker制作jdk镜像_docker_03

3.2 Dockerfile

FROM centos:centos7.9.2009
MAINTAINER wanfei www19930327@126.com
ADD jdk-8u351-linux-x64.tar.gz /usr/local/
ENV JAVA_HOME /usr/local/jdk1.8.0_351
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH
# 设置时区,解决中文乱码
ENV LANG=zh_CN.UTF-8 \
LANGUAGE=zh_CN:zh \
LC_ALL=zh_CN.UTF-8
RUN yum update -y && \
yum reinstall -y glibc-common && \
yum install -y telnet net-tools && \
yum clean all && \
rm -rf /tmp/* rm -rf /var/cache/yum/* && \
localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8 && \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

新建Dockerfile文件,复制上面的内容

dockerfile构建java镜像 docker制作jdk镜像_docker_04

3.3 build 并且 push镜像

# build
docker build -t registry.cn-shanghai.aliyuncs.com/wanfei/centos7-jdk8:v1 .

# push
docker push registry.cn-shanghai.aliyuncs.com/wanfei/centos7-jdk8:v1

查看

[root@DESKTOP-H7HOHUB centos7_jdk8]# docker run -it --rm registry.cn-shanghai.aliyuncs.com/wanfei/centos7-jdk8:v1 bash
[root@e8bf55a44abc /]# java -version
java version "1.8.0_351"
Java(TM) SE Runtime Environment (build 1.8.0_351-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.351-b10, mixed mode)
[root@e8bf55a44abc /]# locale -a
C
en_US.utf8
POSIX
zh_CN.utf8

可以使用镜像了
registry.cn-shanghai.aliyuncs.com/wanfei/centos7-jdk8:v1

四. 制作centos7-java11镜像(忽略)

1. Dockerfile

FROM centos:7
MAINTAINER wanfei www19930327@126.com

ENV MYPATH /usr/local
WORKDIR $MYPATH

#安装java11
RUN yum -y install java-11-openjdk-devel.x86_64

EXPOSE 80

CMD echo $MYPATH
CMD echo "success ---------------- ok"
CMD /bin/bash

使用yum安装不用配环境变量

4.2 build 并且 push镜像

# build
docker build -t registry.cn-shanghai.aliyuncs.com/wanfei/centos7-java11:v1 .

# push
docker push registry.cn-shanghai.aliyuncs.com/wanfei/centos7-java11:v1

4.3 测试

docker run -it --rm registry.cn-shanghai.aliyuncs.com/wanfei/centos7-java11:v1 bash

查看

[root@7ce477e459a2 local]# java -version
openjdk version "11.0.16" 2022-07-19 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.16.0.8-1.el7_9) (build 11.0.16+8-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.16.0.8-1.el7_9) (build 11.0.16+8-LTS, mixed mode, sharing)

五. openjdk

5.1 java8

  • registry.cn-shanghai.aliyuncs.com/wanfei/openjdk:8u342-slim-buster

如果有验证码,可能显示报错Could not initialize class sun.awt.X11FontManager

  • registry.cn-shanghai.aliyuncs.com/wanfei/openjdk:8-jdk-alpine

如果验证码报错,可以使用该镜像,openjdk version "1.8.0_212"

5.2 制作centos7-java8(最新)

MacBookDocker-Desktop制作

5.2.1 搜索
yum search java|grep jdk

java-1.8.0-openjdk.x86_64 : OpenJDK 8 Runtime Environment  # JDK运行环境
java-1.8.0-openjdk-devel.x86_64 : OpenJDK 8 Development Environment  # JDK开发环境
5.2.2 Dockerfile
mkdir -p /Users/wanfei/docker/centos7-java8 && cd /Users/wanfei/docker/centos7-java8

cat <<EOF> Dockerfile
FROM centos:7
MAINTAINER wanfei www19930327@126.com

# 设置语言默认值为中文,时区改为东八区
ENV LANG=zh_CN.UTF-8 \
LANGUAGE=zh_CN:zh \
LC_ALL=zh_CN.UTF-8 \
TZ=Asia/Shanghai

# 安装OpenJDK 8,sudo,设置中文,时区
RUN yum-config-manager --add-repo http://mirrors.aliyun.com/repo/Centos-7.repo && \
    yum install -y java-1.8.0-openjdk-devel && \
    yum install -y sudo && \
    yum clean all && \
    rm -rf /var/cache/yum && \
    localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8 && \
    ln -snf /usr/share/zoneinfo/\$TZ /etc/localtime && echo \$TZ > /etc/timezone

# 检查Java版本
CMD ["java", "-version"]
EOF
5.2.3 build&push多平台镜像
docker buildx build -t registry.cn-shanghai.aliyuncs.com/wanfei/centos7-java8:v1 \
 --platform=linux/amd64,linux/arm64 . --push
  • --platform=linux/amd64,linux/arm64:指定多平台
  • 如果报错执行docker buildx create --use
  • --push推送镜像
5.2.4 测试
docker run -it --rm registry.cn-shanghai.aliyuncs.com/wanfei/centos7-java8:v1 bash

查看版本

[root@6360a338f2d1 /]# java -version
openjdk version "1.8.0_352"
OpenJDK Runtime Environment (build 1.8.0_352-b08)
OpenJDK 64-Bit Server VM (build 25.352-b08, mixed mode)

查看语言包

[root@6360a338f2d1 /]# locale -a
...
查看是否有zh_CN.utf8语言包
zh_CN.utf8

查看时区

[root@6360a338f2d1 /]# date
2023年 04月 25日 星期二 16:19:13 CST
5.2.5 使用

registry.cn-shanghai.aliyuncs.com/wanfei/centos7-java8:v1

5.3 制作centos7-java11(最新)

MacBookDocker-Desktop制作

5.3.1 搜索
yum search java|grep jdk

java-11-openjdk.x86_64 : OpenJDK 11 Runtime Environment  # JDK运行环境
java-11-openjdk-devel.x86_64 : OpenJDK 11 Development Environment  # JDK开发环境
5.3.2 Dockerfile
mkdir -p /Users/wanfei/docker/centos7-java11 && cd /Users/wanfei/docker/centos7-java11

cat <<EOF> Dockerfile
FROM centos:7
MAINTAINER wanfei www19930327@126.com

# 设置语言默认值为中文,时区改为东八区
ENV LANG=zh_CN.UTF-8 \
LANGUAGE=zh_CN:zh \
LC_ALL=zh_CN.UTF-8 \
TZ=Asia/Shanghai

# 安装OpenJDK 11,sudo,设置中文,时区
RUN yum-config-manager --add-repo http://mirrors.aliyun.com/repo/Centos-7.repo && \
    yum install -y java-11-openjdk-devel && \
    yum install -y sudo && \
    yum clean all && \
    rm -rf /var/cache/yum && \
    localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8 && \
    ln -snf /usr/share/zoneinfo/\$TZ /etc/localtime && echo \$TZ > /etc/timezone

# 检查Java版本
CMD ["java", "-version"]
EOF
5.3.3 build&push多平台镜像
docker buildx build -t registry.cn-shanghai.aliyuncs.com/wanfei/centos7-java11:v1 \
 --platform=linux/amd64,linux/arm64 . --push
  • --platform=linux/amd64,linux/arm64:指定多平台
  • 如果报错执行docker buildx create --use
  • --push推送镜像
5.3.4 测试
docker run -it --rm registry.cn-shanghai.aliyuncs.com/wanfei/centos7-java11:v1 bash

查看版本

[root@86da92b17a98 /]# java -version
openjdk version "11.0.19" 2023-04-18 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.19.0.7-1.el7_9) (build 11.0.19+7-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.19.0.7-1.el7_9) (build 11.0.19+7-LTS, mixed mode, sharing)

查看语言包

[root@86da92b17a98 /]# locale -a
...
查看是否有zh_CN.utf8语言包
zh_CN.utf8

查看时区

[root@86da92b17a98 /]# date
2023年 04月 25日 星期二 16:19:13 CST
5.3.5 使用

registry.cn-shanghai.aliyuncs.com/wanfei/centos7-java11:v1