docker--制作自己的镜像(二)

来源:互联网 发布:淘宝联如何设置推广位 编辑:程序博客网 时间:2024/06/07 22:48

前面从理论的角度给大家介绍了两种制作镜像的方式,这篇文章我们将针对第一种方式即使用dockerfile的方式来制作一个集成了ssh与tomcat的镜像文件。

首先为大家说明一下制作这个镜像所要达到的目标,其一我们希望这个镜像能够通过xshell进行连接,其二我们希望通过xhsell来控制tomcat的启动与停止,并且可以向tomcat中部署程序,达到制作一次镜像可以为多个项目服务的目的,为了达到这个目的,我们还需要上传我们制作完毕的镜像到网易蜂巢。

下面为大家介绍一下我们需要用到的一些资源,首先是基础镜像,这里我们采用centos的镜像作为基础镜像,由于从docker官网下载很慢,所以我们从国内的镜像仓库进行下载,我这里使用的镜像仓库是网易蜂巢。我们需要准备应用程序,包括jdk与tomcat,我这里使用的jdk1.8与tocmat7,还可以准备一个测试使用的war包。

1.我们先编辑Dockerfile

在linux中执行 vi Dockerfile命令,编辑Dockerfile,下面是dockerfile的具体内容,直接贴出来了

from hub.c.163.com/library/centos:latestMAINTAINER zw 894904692@qq.com# 安装openssh-server和sudo软件包,并且将sshd的UsePAM参数设置成no  RUN yum install -y openssh-server sudo  # 初始化ssh登陆RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N ''RUN ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''RUN ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ''RUN echo "RSAAuthentication yes" >> /etc/ssh/sshd_configRUN echo "PubkeyAuthentication yes" >> /etc/ssh/sshd_config      # 添加测试用户admin,密码admin,并且将此用户添加到sudoers里  RUN useradd admin  RUN echo "admin:admin" | chpasswd  RUN echo "admin   ALL=(ALL)       ALL" >> /etc/sudoers # 安装jdk  RUN mkdir -p /zw/java/jdk1.8ADD jdk /zw/java/jdk1.8RUN chmod -R 777 /zw/java/jdk1.8#安装tomcatRUN mkdir -p /zw/tomcat/tomcat7ADD tomcat7 /zw/tomcat/tomcat7RUN chmod -R 777 /zw/tomcat/tomcat7#设置环境变量ENV JAVA_HOME /zw/java/jdk1.8ENV PATH $PATH:$JAVA_HOME/bin  #设置容器中的环境变量RUN echo "export JAVA_HOME=/zw/java/jdk1.8" >> /etc/profileRUN echo "export PATH=$JAVA_HOME/bin:$PATH " >> /etc/profileRUN echo "export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar " >> /etc/profile#设置tomcat中catalina.sh的环境变量,否则tomcat停止时会报错RUN sed -i '1i\export JAVA_HOME=/zw/java/jdk1.8' /zw/tomcat/tomcat7/bin/catalina.shRUN sed -i '1i\export JRE_HOME=/zw/java/jdk1.8/jre' /zw/tomcat/tomcat7/bin/catalina.sh#使环境变量立即生效RUN source /etc/profile# 启动sshd服务并且暴露22端口  EXPOSE 22  EXPOSE 8080ENTRYPOINT ./zw/tomcat/tomcat7/bin/startup.sh &&  /usr/sbin/sshd -D
有了dockerfile,剩下的步骤就很简单了,我们只需要执行命令:docker build -t IMAGENAME:TAG . 就可以生成我们自己的tomcat镜像。

生成镜像以后我们可以使用命令:docker run -d -p 2222:22 -p 8085:8080 IMAGENAME:TAG来运行镜像生成容器,之后我们可以使用xhsell连接容器,注意指定端口为2222。

也可以访问ip:8085来查看tomcat是否启动。可以通过xshell来停止与启动tomcat,也可以向tomcat中放入项目进行测试。

下面是在编辑dockerfile时遇到的问题及解决方式:

当我们使用xshell连接容器时,无法停止或启动tomcat,最后发现原因是由于环境变量和权限问题引起的,所以我在dockerfile中执行了chmod -R 777 来赋予权限。在我们停止或启动tomcat时,需要sudo。并在catalina中配置了java与jre,并且为容器配置了java环境变量。

最后为了能够随时使用我们制作完毕的镜像,我们需要把镜像放入网易蜂巢的镜像仓库,具体方式可以查看连接:

http://support.c.163.com/md.html#!计算服务/镜像仓库/使用指南/构建镜像/推送本地镜像.md


原创粉丝点击