1. 构建带基本环境的centos镜像
这里我们基于centos构建基本的操作系统镜像。
1.1 编辑dockerfile
创建文件centos.dockerfile用于构建镜像
############################################
# version : kami/centos
# desc : 构建包含supervisor、ssh环境的centos
############################################
# 设置继承centos官方镜像
FROM centos
# 下面是一些创建者的基本信息
MAINTAINER Kaiming Wan (344277934@qq.com)
# 修改centos mirror(自己提前下载好相应的repo文件用于替换,我这里用的阿里云的镜像仓库)
COPY Centos-7.repo /etc/yum.repos.d
RUN mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup \
&& yum clean all \
&& yum makecache
# 安装相关环境
RUN yum -y install wget openssh-server
# 复制pip和easy_install的镜像配置文件,使用阿里云镜像(这里用户为root)
COPY pip.conf /pip_conf/pip.conf
COPY pydistutils.cfg /pip_conf/.pydistutils.cfg
RUN mkdir ~/.pip \
&& mv /pip_conf/pip.conf ~/.pip \
&& mv /pip_conf/.pydistutils.cfg ~
# 安装pip
RUN yum -y install python-setuptools python-setuptools-devel
RUN easy_install pip
# 安装supervisor
RUN pip install supervisor
# 添加 supervisord 的配置文件,并复制配置文件到对应目录下面。(supervisord.conf文件和Dockerfile文件在同一路径)
COPY supervisord.conf /etc/supervisor/supervisord.conf
#仅暴露22和80端口(这里注释掉了,暴露所有端口)
# EXPOSE 22 80
# 执行supervisord来同时执行多个命令,使用 supervisord 的可执行路径启动服务。
CMD ["/usr/bin/supervisord"]
1.2 编写supervisord.conf
[supervisord]
nodaemon=true
[program:sshd]
command=/usr/sbin/sshd -D
1.3 构建centos镜像
docker build -f centos7.dockerfile -t kami/centos .
2. 构建带JDK1.7环境的镜像
2.1 编辑dockerfile
############################################
# version : kami/jdk7
# desc : 当前版本安装的jdk7
############################################
# 设置继承centos官方镜像
FROM kami/centos
# 下面是一些创建者的基本信息
MAINTAINER Kaiming Wan (344277934@qq.com)
# 设置环境变量,所有操作都是非交互式的
ENV DEBIAN_FRONTEND noninteractive
# 添加 supervisord 的配置文件,并复制配置文件到对应目录下面。(supervisord.conf文件和Dockerfile文件在同一路径)
COPY supervisord.conf /etc/supervisor/supervisord.conf
# 设置 jdk 的环境变量,若读者有其他的环境变量需要设置,也可以在这里添加。
ENV JAVA_HOME /srv/jdk7
# 复制 jdk1.7.0_80 文件到镜像中(jdk1.7.0_80 文件夹要和Dockerfile文件在同一路径)
ADD jdk1.7.0_80 /srv/jdk7
# 执行supervisord来同时执行多个命令,使用 supervisord 的可执行路径启动服务。
CMD ["/usr/bin/supervisord"]
2.2 编写supervisord.conf
[supervisord]
nodaemon=true
[program:sshd]
command=/usr/sbin/sshd -D
2.3 在centos镜像基础上构建docker镜像
docker build -f jdk7.dockerfile -t kami/jdk7 .
3. 基于JDK7镜像构建tomcat环境
3.1 编写dockerfile
############################################
# version : centos/Tomcat/7.0.75
# desc : 基于jdk7的tomcat7.0.75镜像
############################################
# 设置继承自我们创建的 jdk7 镜像
FROM kami/jdk7
# 下面是一些创建者的基本信息
MAINTAINER Kaiming Wan (344277934@qq.com)
# 设置环境变量,所有操作都是非交互式的
ENV DEBIAN_FRONTEND noninteractive
# 添加 supervisord 的配置文件,并复制配置文件到对应目录下面。(supervisord.conf文件和Dockerfile文件在同一路径)
COPY supervisord.conf /etc/supervisor/supervisord.conf
# 设置 tomcat 的环境变量,若读者有其他的环境变量需要设置,也可以在这里添加。
ENV CATALINA_HOME /srv/tomcat/tomcat
# 复制 apache-tomcat-7.0.75文件到镜像中(apache-tomcat-7.0.75 文件夹要和Dockerfile文件在同一路径)
COPY apache-tomcat-7.0.75 /srv/tomcat/tomcat
# 容器需要开放Tomcat 8080端口
EXPOSE 8080
# 容器需要开放SSH 22端口
EXPOSE 22
# 执行supervisord来同时执行多个命令,使用 supervisord 的可执行路径启动服务。
CMD ["/usr/bin/supervisord"]
3.2 编写supervisord.conf
[supervisord]
nodaemon=true
[program:sshd]
command=/usr/sbin/sshd -D
[program:tomcat]
command=/bin/bash -c "exec ${CATALINA_HOME}/bin/catalina.sh run"
3.3 在jdk镜像基础上构建tomcat镜像
docker build -f tomcat.dockerfile -t kami/tomcat7 .
3.4 尝试运行tomcat容器
docker run -p 10022:22 -p18080:8080 kami/tomcat7
用tomcat7镜像成功启动的效果如下图。
4. 构建mysql镜像
docker pull mysql:latest