1、第一种方式(操作式)
- 先拉取centos:7
docker pull centos:7
- 启动centos:7镜像
docker run -it --name mycentos centos:7 /bin/bash
从外面下载jdk1.8的包传到服务器目录/javademo下
在/javademo目录下,将jdk的包解压
tar -zxvf jdk-8u211-linux-x64.tar.gz
- 将jdk的包拷贝到centos:7容器中
docker cp jdk1.8.0_211 myCentos:/usr/local/java
- 进入容器
docker exec -it myCentos bash
- 给centos:7容器设置环境变量
vi /etc/profile
- 加入环境变量
export JAVA_HOME=/usr/local/java/jdk1.8.0_211
export PATH=$JAVA_HOME/bin:$PATH
- 刷新环境变量
source /etc/profile
这样加入环境变量的方式,我发现,一旦容器重启,环境变量就会不生效,只有重新刷新环境变量才会好。
不过之后你可以将这个容器打包成image作为其他的基础镜像,只需要在制作镜像时Dockerfile中加入jdk的环境变量就行。
- 打包成image(只能作为基础镜像,直接启动环境变量不生效,source /etc/profile后可以)
docker commit myCentos mycentos:v1
我们以这个为基础镜像写一个Dockerfile,运行一个jar包,我将jar包和Dockerfile放在同一文件夹下,进入这个文件夹
FROM mycentos:v1
WORKDIR /app
COPY demo-0.0.1-SNAPSHOT.jar /app/demo.jar
ENV JAVA_HOME /usr/local/java/jdk1.8.0_211
ENV PATH $JAVA_HOME/bin:$PATH
ENV JAVA_OPTS="-server -Xmx2g -Xms2g -Dfile.encoding=UTF8 -Duser.timezone=GMT+08"
CMD exec java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /app/demo.jar
- 使用Dockerfile制作一个image(在Dockerfile的路径下)
docker build -t='myjava:m1' .
- 运行这个image
docker run --privileged -it -d --name mydemo -p 8085:8085 myjava:m1
1、第二种方式(Dockerfile一体式)
FROM centos:7
WORKDIR /app
ADD jdk-8u211-linux-x64.tar.gz /usr/local/java/
COPY demo-0.0.1-SNAPSHOT.jar /app/demo.jar
ENV JAVA_HOME /usr/local/java/jdk1.8.0_211
ENV PATH $JAVA_HOME/bin:$PATH
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV JAVA_OPTS="-server -Xmx2g -Xms2g -Dfile.encoding=UTF8 -Duser.timezone=GMT+08"
CMD exec java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /app/demo.jar