dockerfile动手自己建image

来源:互联网 发布:复杂网络的同步 编辑:程序博客网 时间:2024/06/05 14:40

1,熟悉dockerfile语法

2,手动构建centos7

3,使用官网centos7

4,系统层--基于官网cenos7 添加 supervisor+ssh

启动后即启动ssh

 

5,运行层—安装jdk

6,app层安装tomcat,暴露8080.—supervisor接管.

 

设计原则:运行层和应用层均基于系统层.

 

 

 

1,docker file 设计

 

 

1,自己动手构建centos


先装个工具

yum install epel-release -yyum install -y \https://www.dwhd.org/wp-content/uploads/2016/06/febootstrap-3.21-4.el6_.x86_64.rpm \https://www.dwhd.org/wp-content/uploads/2016/06/fakechroot-libs-2.9-24.5.el6_1.1.x86_64.rpm \https://www.dwhd.org/wp-content/uploads/2016/06/febootstrap-supermin-helper-3.21-4.el6_.x86_64.rpm \https://www.dwhd.org/wp-content/uploads/2016/06/fakechroot-2.9-24.5.el6_1.1.x86_64.rpm



使用一个叫febootstrap来构建个镜像,过程就像是下载一个个目录从以下那个url.

oh 对,这个安装适用centos6 7,没错,同样使用centos7. 放心装吧.


接下去构建镜像:

制作镜相

febootstrap -i bash -i wget -i yum -i iputils -i iproute -i man -i vim-minimal -i openssh-server -i openssh-clients centos67 centos67-image http://mirrors.aliyun.com/centos/6.7/os/x86_64/cd centos67-imagetar -c .|docker import - centos6.7-ssh febootstrap -i bash -i wget -i yum -i iputils -i iproute -i man -i vim-minimal -i vim-enhanced.x86_64 -i openssh-server -i openssh-clients centos7 centos7 http://mirrors.aliyun.com/centos/7/os/x86_64/cd centos67-imagetar -c .|docker import - centos6.7-ssh #制作centos7.3镜像—我用的这种febootstrap -i bash -i wget -i yum -i net-tools -i iputils -i iproute -i openssh-server -i openssh-clients -i man centos73 centos73-doc http://mirrors.163.com/centos/7.3.1611/os/x86_64/#执行完后生成以下目录cd docker73-doc#进入目录将生成的文件导入为docker imagetar -c . | docker import - centos73-bash 
上面-i可以指定构建时候需要安装的包

 

1,系统层--新建个带有supervisor管理sshd 的centos.基于官网的centos来做吧


[root@lanny dockerfile]# cat system/centos-ssh/Dockerfile #Docker for centos7#Base imagesFROM centos#MAINTAINERMAINTAINER lanny <maxiaolang@pp100.com>#yum configurationRUN  rm -rf /var/cache/yum/*ADD yum.repos.d.tar.gz /etc/#Base PkgRUN yum clean all \        && yum makecache  \        && yum -y install \        epel-release \        sudo \        psmisc \        net-tools \        tree \        lrzsz \        wget \        vim \        git \        mysql-devel \        supervisor \        openssh-server \        openssh-clients \        openssl-devel \        yum clean all      #For CONFIG SSHDRUN ssh-keygen -q -N "" -t rsa -f /etc/ssh/ssh_host_rsa_key && \    ssh-keygen -q -N "" -t dsa -f /etc/ssh/ssh_host_dsa_key && \    ssh-keygen -q -N "" -A -t ecdsa -f /etc/ssh/ssh_host_dsa_key    #For supervisorRUN  mkdir -p /var/log/supervisor/ADD supervisord.conf /etc/supervisord.confADD sshd.ini /etc/supervisord.d/CMD ["/usr/bin/supervisord", "--configuration=/etc/supervisord.conf"]#set root pwdRUN echo 'root:123456' | chpasswd#EXPOSE 22


穿插下supervisor安装方法:

centos6可以以下方法安装,确保不错

yum install python-setuptools -yyum install epel-release -yyum install python-meld3 -y
easy_install supervisor

centos7直接yum安装吧.

安装后配置,只需要修改为super前台运行即可

nodaemon=true


上面有个坑坑惨了我,  就是sshd要前台运行,
执行systemctl start sshd时候报以下错误:

systemctl - Failed to get D-Bus connection: Operation not permitted
ssh在容器中正确运行方法:

[root@bff724b92c60 supervisord.d]# cat sshd.ini [program:sshd]command=/usr/sbin/sshd -Dprocess_name=%(program_name)sautostart=true


2,运行层


[root@lanny dockerfile]# cat runtime/Dockerfile #Docker for jdk-8u25-linux-x64.gz#Base imagesFROM docker.io/lanny/centos73#MAINTAINERMAINTAINER lanny <iher@foxmail.com>#For JDKADD jdk-8u25-linux-x64.gz /usr/local/RUN ln -s /usr/local/jdk1.8.0_25 /usr/local/jdkRUN echo 'JAVA_HOME=/usr/local/jdk' >> /etc/profile && \    echo 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/bin:/usr/local/jdk/bin' >> /etc/profile && \    echo CLASSPATH=.:/usr/local/jdk/lib:/usr/local/jdk/jre/lib >> /etc/profile && \    echo export JAVA_HOME CLASSPATH >> /etc/profile#For CONFIG SSHD#ADD sshd.ini /etc/supervisord.d/CMD ["/usr/bin/supervisord", "--configuration=/etc/supervisord.conf"]#SSHDEXPOSE 22



3,app层

[root@lanny dockerfile]# cat app/tomcat/Dockerfile #Docker for jdk-8u25-linux-x64.gz apache-tomcat-7.0.62.tar.gz#Base imagesFROM docker.io/lanny/centos73#MAINTAINERMAINTAINER lanny <iher@foxmail.com>#For JDKADD jdk-8u25-linux-x64.gz /usr/local/RUN ln -s /usr/local/jdk1.8.0_25 /usr/local/jdkRUN echo 'JAVA_HOME=/usr/local/jdk' >> /etc/profile && \    echo 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/bin:/usr/local/jdk/bin' >> /etc/profile && \    echo CLASSPATH=.:/usr/local/jdk/lib:/usr/local/jdk/jre/lib >> /etc/profile && \    echo export JAVA_HOME CLASSPATH >> /etc/profile#For tomcatADD apache-tomcat-7.0.62.tar.gz /usr/localRUN ln -s /usr/local/apache-tomcat-7.0.62 /usr/local/tomcatENV TOMCAT_HOME /usr/local/tomcat#For CONFIG SSHDADD tomcat.ini /etc/supervisord.d/CMD ["/usr/bin/supervisord", "--configuration=/etc/supervisord.conf"]#portEXPOSE 22EXPOSE 8080

tomcat的super管理脚本: 要注意前台运行

[root@bff724b92c60 supervisord.d]# cat tomcat.ini [program:tomcat]command=/usr/local/tomcat/bin/catalina.sh runprocess_name=%(program_name)sautostart=true







 

0 0
原创粉丝点击