docker 创建jdk镜像
基于上一个创建的基础镜像, wenbronk/centos
Dockerfile
############################################ # version : wenbronk/centos/jdk8u121 # desc : 当前版本安装的jdk8u121 ############################################ FROM wenbronk/centos MAINTAINER wenbronk "wenbronk@163.com" # 设置环境变量,所有操作都是非交互式的 ENV DEBIAN_FRONTEND noninteractive # 添加 supervisord 的配置文件,并复制配置文件到对应目录下面。(supervisord.conf文件和Dockerfile文件在同一路径) COPY supervisord.conf /etc/supervisor/supervisord.conf # 安装jdk # RUN mkdir /var/tmp # 将本地的jdk重命名为jdk1.8-64.tar.gz, 并解压, 只能使用相对路径 ADD jdk-8u121-linux-x64.tar.gz /var/tmp
#目录, 上传目录可能会出现权限不足的问题, chmod +x java
# COPY jdk1.8.0_121 /var/tmp/jdk1.8.0_121
# 设置环境变量 ENV JAVA_HOME /var/tmp/jdk1.8.0_121 ENV PATH $PATH:$PATH:$JAVA_HOME/bin # 执行supervisord来同时执行多个命令,使用 supervisord 的可执行路径启动服务。 CMD ["/usr/bin/supervisord"]
supervisord.conf
# 配置文件包含目录和进程 # 第一段 supervsord 配置软件本身,使用 nodaemon 参数来运行。 # 第二段包含要控制的 2 个服务。每一段包含一个服务的目录和启动这个服务的命令. [supervisord] nodaemon=true [program:sshd] command=/usr/sbin/sshd -D
因为工作需要安装jdk1.7, 方法类似, 改下名称即可
又一个坑:
ENV设置环境变量后, 使用exec链接人容器, 环境变量生效, 但ssh链接入容器, 环境变量不生效