zoukankan      html  css  js  c++  java
  • Dockerfile

     

    一、什么是Dockerfile

    1、Dockerfile的用途

    Dockerfile是用来构建镜像的,Dockerfile构建过程:
    • 1.从基础镜像运行一个容器
    • 2.执行一条指令,对容器作出修改
    • 3.执行类似docker commit的操作,提交一个新的镜像层
    • 4.再基于刚提交的镜像运行一个新容器
    • 5.执行Dockerfile中的下一跳指令,直至所有指令执行完毕.

    2、运行构建

    注意文件名字必须叫Dockerfile:
    • # docker build -t="syx/df_test2" .
    • -t="syx/df_test2" ,指定产生镜像的 镜像名:标签名
    • 每条RUN指令产生一个新都会创建一个新的镜像层并对镜像进行提交,可以启动中间产生的镜像,运行下一条指令进行调试!!!
    • 下次运行时不会重新创建该缓存镜像,可以指定参数(--no-cache)强制创建!

    运行结束就能看到我们自己构建的镜像了

    • # docker images

    3、执行镜像

    • # docker run -d -p 8080:80 --name static_web liangshengqi/static_web nginx -g "daemon off"
    • # docker run -d -P --name static_web liangshengqi/static_web nginx -g "daemon off"  将容器80端口对宿主机开放,并且绑定到主机的一个随机端口

    4、查看镜像的 ONBUILD 指令

    docker inspect imgId

    二、Dockerfile的例子

    1、例一

    # vim Dockerfile
    • FROM ubuntu
    • MAINTAINER syx '783284481@qq.com'
    • RUN apt-get update && apt-get install -y nginx
    • EXPOSE 80

    2、例二

    # version: 0.0.1

    FROM ubuntu: 14.04

    MAINTAINER liangshengqi "liangshengqi@langchao.com"

    RUN apt-get update

    RUN apt-get install -y nginx

    RUN echo 'Hi, I am in your container' > /usr/share/nginx/html/index.html

    EXPOSE 80

    三、Dockerfile的指令

    1、 CMD

    CMD ["/bin/bash","-l"]

    docker run 命令可以覆盖 CMD指令。

    2、 ENTRYPOINT

    ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"]

    ENTRYPOINT指令指定的命令不会被docker run覆盖,docker run传递的参数会再次传递给ENTRYPOINT指定的命令。

    这个命令会以前台的方式启动nginx守护进程,此时这个容器作为一个web服务器来运行。

    组合 ENTRYPOINT 和 CMD 

    ENTRYPOINT ["/usr/sbin/nginx"]

    CMD ["-h"] 

    这个例子中,

    • 如果启动容器时,在命令行中指定参数传递给nginx守护进程,如指定 -g "daemon off",nginx守护进程就以指定的参数方式运行(此处是以前台方式运行)
    • 如果启动容器时,在命令行中没有指定参数,就会使用默认的CMD指定的-h参数(显示nginx的帮助信息)

     其实,--entrypoint可以覆盖dockerfile中的ENTRYPOINT指令! 

    3、WORKDIR 设置工作目录

    • WORKDIR /opt/webapp/db
    • RUN bundle install
    • WORKDIR /opt/webapp
    • ENTRYPOINT  ["backup"]

    或者

    • docker run -it -w /var/log ubuntu pwd

    4、ENV 设置环境变量

    • ENV TARGET_DIR  /opt/app
    • WORKDIR $TARGET_DIR

    或者临时有效的设置

    • docker run  -it  -e "WEB_PORT=8080"  ubuntu env

    5、USER 指定该镜像会以什么样的用户去运行

    USER user

    USER user:group

    USER uid

    USER uid:gid

    6、ADD 和 COPY

    ADD  复制文件和目录,如果需要解压,就解压

    COPY 复制文件

    • COPY conf.d  /etc/apache2
    • ADD latest.tar.gz  /var/www/wordpress

    7、ONBUILD

    当一个镜像被其他镜像用作基础镜像时,会触发的动作

    ONBUILD  ADD  .  /ap/src

    ONBUILD RUN cd  /app/src && make

    8、VOLUME 

     

  • 相关阅读:
    ios开发遇到的问题
    getopt()——命令行参数分析
    浅谈Samsung Exynos4412处理器
    TTL电平,CMOS电平,232/485电平,OC门,OD门基础知识
    (转载)跟Classic ARM 处理器说拜拜——Atmel SAMA5D3 Xplained开发板评测
    (转载)Quartus II中FPGA的管脚分配保存方法(Quartus II)
    DE2资源集锦
    收到DE2+LCM+ D5M套件,拾回DE2,努力,奋进!
    windows 服务器时间同步失败处理方法
    机械加工仿真软件-----三维弯管机仿真系统
  • 原文地址:https://www.cnblogs.com/lexiaofei/p/7172210.html
Copyright © 2011-2022 走看看