使用docker在centos下安装java环境

既然庸庸碌碌也难逃一死,何不奋起一搏?

准备工作

  • docker安装

    1
    sudo yum install docker-ce
  • 主机安装并配置java环境, 要求使用解压版的jdk
    配置环境变量, 修改/etc/profile 加入以下内容,修改后 马上生效还需要运行 source /etc/profile

    1
    2
    3
    export JAVA_HOME=/usr/local/jdk1.8.0_161
    export PATH=$JAVA_HOME/bin:$PATH
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  • 安装centos镜像

    1
    docker pull centos

安装过程

创建的一个空的文件夹build_jdk, 并将我们的jdk目录拷贝到这个目录:

1
cp -r jdk1.8.0_161 /root/build_jdk/

创建Dockerfile文件
需要将主机的jdk文件拷贝到镜像里, 并配置环境变量

1
2
3
4
5
6
FROM centos:latest
COPY jdk1.8.0_161 /usr/local/jdk1.8.0_161
ENV JAVA_HOME=/usr/local/jdk1.8.0_161
ENV PATH $JAVA_HOME/bin:$PATH
ENV CLASSPATH .:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
CMD /usr/sbin/init

生成镜像
在Dockerfile文件的文件加下执行

1
docker build -t centos:jdk .

注意后面的.代表当前目录
生成容器

1
docker run --privileged -d -p 8080:80 --name myjdk -v /home/demo:/var/www/html centos:jdk

–privileged 参数,给容器加特权,否则交互式方式进入容器无法操作一些譬如修改内核、修改系统参数、甚至启动服务等
-d 在后台启动
-p 端口映射
-v 文件夹共享
–name 给容器起一个名称
镜像名:镜像标签
启动容器的时候执行的命令, 必须要执行/usr/sbin/init这个命令,