文章目录
- 一. 制作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
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
下载完成放到下面目录
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
文件,复制上面的内容
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(最新)
MacBook
,Docker-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(最新)
MacBook
,Docker-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