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
- Docker实战(二):制作自己的Docker镜像
- Docker实战(二):制作自己的Docker镜像
- Docker实战(二):制作自己的Docker镜像
- docker--制作自己的镜像(二)
- 制作自己的Docker镜像
- Docker的使用--制作自己的镜像(四)
- docker--制作自己的镜像(一)
- docker--制作自己的镜像(三)
- Arukas Docker 制作自己的镜像---Docker hub
- 【二十一】Docker-创建自己的Docker镜像
- 在docker中制作自己的JDK+tomcat镜像
- Docker 制作自己的WEB镜像,并运行项目
- Docker实战(二):容器使用和镜像制作
- Docker(二)-Docker化-构建Springboot的镜像
- Docker的使用--第一个Docker镜像(二)
- Docker镜像制作
- 制作Docker镜像
- docker制作镜像
- PS学习笔记----图层蒙版
- 由浅入深理解装饰器(xinlan course)
- Jvm的基本结构学习笔记
- django使用总结
- Android体系总结
- docker--制作自己的镜像(二)
- HDU 6035 Colorful Tree dfs
- xhr获取二进制数据方法
- LintCode之矩阵面积
- 【多校训练】hdu 6034 Balala Power!
- More is better --并查集
- pc网站qq互联登录授权php版
- LeetCode——617. Merge Two Binary Trees(递归,C++)
- HDU1232 畅通工程