有时候需要自己制作基础镜像,我们可以通过编写Dockerfile方式来制作满足需求的镜像。
到oracle官网下载对应的jdk版本的二进制包
$sudo mkdir baseimage
$cd baseimage
$sudo wget https://www.oracle.com/cn/java/technologies/javase/javase8u211-later-archive-downloads.html#license-lightbox
$tar -xf jdk-8u381-linux-x64.tar.gz
编写Dockerfile ,Dockerfile 如下:
FROM centos:7 ###底层linux系统
MAINTAINER Do. ###制作人
WORKDIR /root ###工作目录
###环境变量编写
ENV JAVA_DIR=/usr/local
ENV JAVA_HOME=$JAVA_DIR/jdk1.8.0_381
ENV PATH=$PATH:$JAVA_HOME/bin
###镜像里面需要哪些命令,一般用不了这么多
ADD jdk-8u381-linux-x64.tar.gz $JAVA_DIR
RUN yum install -y unzip && yum install -y telent && yum install -y vim && yum install -y wget && yum install -y curl && yum install -y tar && yum install -y unzip
###指定进入容器后shell 这条会被下面的ENTRYPOINT 引用或者覆盖,换句话说就是这里如果使用/bin/sh 最终容器运行的时候还是/bin/bash
CMD /bin/bash
###
ENTRYPOINT ["/bin/bash","-c","while true; do sleep 300; done;"]
制作镜像:
$docker build -t centos-java:0.1 .
Sending build context to Docker daemon 483MB
Step 1/10 : FROM centos:7
---> eeb6ee3f44bd
Step 2/10 : MAINTAINER Do.
---> Using cache
---> 55719f87025d
Step 3/10 : WORKDIR /root
---> Using cache
---> c3bf7639a447
Step 4/10 : ENV JAVA_DIR=/usr/local
---> Using cache
---> 3374206ee889
Step 5/10 : ENV JAVA_HOME=$JAVA_DIR/jdk1.8.0_381
---> Using cache
---> 9b752f46fc9b
.....
Successfully built aa4a3b1c6928
Successfully tagged centos-java:0.1
运行镜像查看java环境是否有效
$ docker run -d centos-java:0.1
$ docker ps | grep centos
d95c52949f99 centos-java:0.1 "/bin/bash -c 'while…" 32 minutes ago Up 32 minutes romantic_hofstadter
$ docker exec -it d95c52949f99 bash
[root@d95c52949f99 ~]# java -version
java version "1.8.0_381"
Java(TM) SE Runtime Environment (build 1.8.0_381-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.381-b09, mixed mode)
[root@d95c52949f99 ~]#
java环境docker基础镜相包打包完成,可以发给研发大佬,让他们添加应用程序。