美文网首页
dokcerfile

dokcerfile

作者: K8S_Goearth | 来源:发表于2018-11-10 21:48 被阅读0次

    自定义docker镜像

    手动修改容器镜像

    1.下载相应版本的centos,以下载centos7.5.1804版本为例

    [root@docker ~]# docker pull centos:7.5.1804

    [root@master1 ~]# docker images

    REPOSITORY                                                TAG                IMAGE ID            CREATED            SIZE

    docker.io/centos                                          7.5.1804            76d6bc25b8a5        4 days ago          200 MB

    2.启动镜像

    [root@docker ~]# docker run -it -d --name centos1 centos

    并进入到docker,然后安装自己定义的nginx或者tegine

    [root@d72250ecaa5e /]#

    编写nginx启动脚本

    [root@d72250ecaa5e /]# cat /auto_nginx.sh

    #!/bin/bash

    /usr/sbin/sshd -D

    [root@d72250ecaa5e /]# chmod +x /auto_sshd.sh

    更新:这条命令更方便以后启动,如下:

    [root@docker ~]# docker commit --change='CMD ["/auto_sshd.sh"]' -c "EXPOSE 22" test-centos1 centos_sshd:7.0

    sha256:7bb4efd82c4ff1f241cbc57ee45aab1b05d214b1e9fcd51196696c67d480e70b

    命令注释: --change : 将后期使用此镜像运行容器时的命令参数、开放的容器端口提前设置好。

    ---------------------------------------------------------------------------------------------------

    dockerfile方式制定镜像

    dockerfile格式:

    FROM nginx:tag                          基础镜像

    MAINTAINER  wbb wbb@qq.com  指定维护者

    WORKDIR  /usr/local                    指定下面命令的运行目录

    RUN npm install                            在shell中执行的命令

    WORKDIR work                            #在/usr/local 的基础上指定运行目录,所以当前目录为:/usr/local/work

    CMD  node ./bin/www                容器启动时执行的命令,每个dockerfile只能执行一条cmd命令,如果有多条,只执行最后一条

    EXPOSE  22 80 3000                  容器对外开放端口

    ENV  PATH /usr/local                  指定环境变量

    ADD  /usr/local/nginx/nginx.conf  /usr/local/nginx    将本地目录中的文件复制到容器目录中

    COPY /usr/local/nginx /usr/local/nginx    将本地目录复制到容器中,容器目录不存放时自动创建

    VOLUME                                            创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等

    docker build -t image_tag /usr/local/docker/file/path

    -t 指明新镜像的 tag ,后面为 Dockerfile 的路径

    例:

    docker build -t wbb/tomcat_yolink /root/dockerfile/或

    docker build -t wbb/tomcat_yolink .

    注:/root/dockfile命名必须为Dockerfile,不然会报错

    docker tag wbb/tomcat_yolink 172.16.0.2:5000/wbb/tomcat_yolink

    docker push 172.16.0.2:5000/wbb/tomcat_yolink

    #docker history 镜像ID查看制作的镜像历史过程

    自建tomcat-dockerfile

    [root@master1 dockerfile]# ls

    Dockerfile  jdk-8u131-linux-x64.rpm  tomcat_zf  tomcat_zf.tar.gz

    要安装文件和Dockerfile放到同一目录下,Docerfile命名不能写其他

    [root@master1 dockerfile]# cat Dockerfile 以下是dockerfile文件具体内容

    #Centos based container with Java1.8.0_131 and Tomcat8.5.34

    FROM 172.16.0.2:5000/docker.io/centos

    MAINTAINER  wbb-20181028 wbb@qq.com

    ENV VER JDK1.8.0_131~TOMCAT8.0.53

    #prepare java environment

    ENV JAVA_HOEM /usr/java/jdk1.8.0_131

    ENV JRE_HOME  /usr/java/jdk1.8.0_131/jre

    ENV CLASSPATH .:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

    ENV PATH $JAVA_HOME/bin:$$JAVA_HOME/bin:$PATH

    #copy jdk tomcat to container

    COPY jdk-8u131-linux-x64.rpm /root

    COPY tomcat_zf.tar.gz /usr/local/

    #install jdk

    RUN rpm -ivh /root/jdk-8u131-linux-x64.rpm

    #RUN chmod 755 /usr/local/tomcat_zf/bin/*sh

    RUN tar zxvf  /usr/local/tomcat_zf.tar.gz -C /usr/local/ && rm -f /usr/local/tomcat_zf.tar.gz

    #private expose

    EXPOSE 8080

    #START TOMCAT

    ENTRYPOINT ["/usr/local/tomcat_zf/bin/catalina.sh","run"]

    相关文章

      网友评论

          本文标题:dokcerfile

          本文链接:https://www.haomeiwen.com/subject/zvytfqtx.html