zoukankan      html  css  js  c++  java
  • 编写Dockerfile

    有待整理

    制作Docker image 有两种方式

    1、使用 Docker container,直接构建容器,再导出成 image 使用

    2、使用 Dockerfile,将所有动作写在文件中,再 build 成 image。Dockerfile 的方式非常灵活,本文使用Dockerfile

    一、build一个nginx

    #mkdir mydocker
    #cd mydocker
    
    #vi Dockerfile
    FROM daocloud.io/nginx:latest
    RUN echo '<h1>hello, docker!</h1>' > /usr/share/nginx/html/index.html

    构建镜像,在 Dockerfile 文件所在目录执行:

    [root@localhost mydocker]# pwd
    /root/mydocker
    [root@localhost mydocker]# cat Dockerfile
    FROM daocloud.io/nginx:latest
    RUN echo '<h1>hello, docker!</h1>' > /usr/share/nginx/html/index.html

    #docker build -t nginx:v1 . (注:-t是表示一个tag,自己指定)
    #docker run  --name docker_nginx_v1  -itd  -p 80:80 nginx:v1  

    二、build一个centos

    [root@localhost Dockerfile]# pwd
    /root/Dockerfile
    [root@localhost Dockerfile]# cat Dockerfile 
    FROM daocloud.io/centos:7
    MAINTAINER "you" <your@email.here>
    ENV container docker
    RUN yum -y swap -- remove fakesystemd -- install systemd systemd-libs
    RUN yum -y update; yum clean all; 
    (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i ==systemd-tmpfiles-setup.service ] || rm -f $i; done); 
    rm -f /lib/systemd/system/multi-user.target.wants/*;
    rm -f /etc/systemd/system/*.wants/*;
    rm -f /lib/systemd/system/local-fs.target.wants/*; 
    rm -f /lib/systemd/system/sockets.target.wants/*udev*; 
    rm -f /lib/systemd/system/sockets.target.wants/*initctl*; 
    rm -f /lib/systemd/system/basic.target.wants/*;
    rm -f /lib/systemd/system/anaconda.target.wants/*;
    VOLUME [ "/sys/fs/cgroup" ]
    CMD ["/usr/sbin/init"]

    执行构建

    #docker build --rm -t centos:v1 .
    Successfully built b9fa69e719a8
    Successfully tagged centos:v1

    三、优化

    1、一次RUN指令形成新的一层,尽量Shell命令都写在一行,减少镜像层。 例如:

    FROM centos:7
    MAINTAINER www.ctnrs.com
    RUN yum install epel-release -y 
    RUN yum install -y gcc gcc-c++ make -y
    RUN wget http://docs.php.net/distributions/php-5.6.36.tar.gz
    RUN tar zxf php-5.6.36.tar.gz
    RUN cd php-5.6.36
    RUN ./configure --prefix=/usr/local/php 
    RUN make -j 4 
    RUN make install
    EXPOSE 9000
    CMD ["php-fpm"]

    改为:

    FROM centos:7
    MAINTAINER www.ctnrs.com
    RUN yum install epel-release -y && 
        yum install -y gcc gcc-c++ make
    
    RUN wget http://docs.php.net/distributions/php-5.6.36.tar.gz && 
        tar zxf php-5.6.36.tar.gz && 
        cd php-5.6.36 && 
        ./configure --prefix=/usr/local/php && 
        make -j 4 && make install
    EXPOSE 9000
    CMD ["php-fpm"]

    2、一次RUN形成新的一层,如果没有在同一层删除,无论文件是否最后删除,都会带到下一层,所以要在每一层清理对应的残留数据,减小镜像大小。

    FROM centos:7
    MAINTAINER www.ctnrs.com
    RUN yum install epel-release -y && 
        yum install -y gcc gcc-c++ make gd-devel libxml2-devel 
        libcurl-devel libjpeg-devel libpng-devel openssl-devel 
        libmcrypt-devel libxslt-devel libtidy-devel autoconf 
        iproute net-tools telnet wget curl && 
        yum clean all && 
        rm -rf /var/cache/yum/*
    
    RUN wget http://docs.php.net/distributions/php-5.6.36.tar.gz && 
        tar zxf php-5.6.36.tar.gz && 
        cd php-5.6.36 && 
        ./configure --prefix=/usr/local/php 
        make -j 4 && make install && 
        cd / && rm -rf php*

    注意:

    1、 docker  build   -t  后面镜像的名字中不能包含大写字母!
    2、 docker run –p 8080:80 –d nginx 符号错误 “-” 其实为"-"
           docker run -p 8080:80 -d nginx

    3、配置文件里面可能会发生转行,注意检查

    4、当前路径下不要放无用的文件,因为会一起打包发送给 docker 引擎,如果文件过多会造成过程缓慢。

    参考

    http://blog.ctnrs.com/post/dockerfile-skills/

    https://www.runoob.com/docker/docker-dockerfile.html

  • 相关阅读:
    抖音服务器带宽有多大,才能供上亿人同时刷?今天长见识了。。
    用了很多年的 CMS 垃圾收集器,终于换成了 G1,真香!!
    Spring Boot 项目脚本(启动、停止、重启、状态)
    正排倒排,并不是 MySQL 的排序的全部!
    自从在 IDEA 中用了热部署神器 JRebel 之后,开发效率提升了 10 倍!
    beego实现多端口监听
    区块链分类
    Hyperledger/Fabric
    register db `default`, default addr for network 'localhost:3306' unknown must have one register DataBase alias named `default`
    go vendor的正确打开方式
  • 原文地址:https://www.cnblogs.com/zjz20/p/12612109.html
Copyright © 2011-2022 走看看