zoukankan      html  css  js  c++  java
  • docker file 笔记

    FROM    # FROM scratch,  FROM centos, FROM ubuntu:latest

    LABEL 

    RUN  # 每运行一次RUN,image都会生成新的一层,为了美观,避免无用分层,尽量合并多条命令为一条, 比如 yum install vim && yum install gcc, 反斜线换行,最后清理cache  rm -rf /var/lib/apt/lists/*

    WORKDIR  # 设定当前目录,类似linux cd, 没有目录会自动创建目录,  尽量是用绝对路径,不要使用RUN cd

    ADD  # 添加文件,  和copy类似,但是add可以解压缩, 大部分情况COPY优于ADD, 添加远程文件,使用curl或者wget

    ENV  # 设置环境变量, 增加可维护性

    VOLUME

    EXPOSE  # 暴露端口

    CMD  # 设置容器启动后默认执行的命令; 如果docker run指定了其它命令,CMD命令会被忽略; 如果定义了多个CMD, 只有最后一个会执行

    ENTRYPOINT  # 容器启动时运行的命令; 容器以应用程序或者服务的形式运行; 不会被忽略,一定会执行; 最佳实践: 写一个shell脚本座位entrypoint, 很多官方的docker都用entrypoint启动服务

    RUN 和 CMD有shell格式和Exec格式

    shell格式

    RUN apt-get install -y vim

    CMD echo "hello world"

    Exec格式

    RUN ["yum", "install", "-y", "vim" ]

    CMD ["bin/echo", "hello world"]

    Shell格式,所有的命令,在一个shell里面执行,但是Exec格式,只是单纯执行了一个命令,这个命令的环境变量不受上一条命令的影响

    ENTRYPOINT和CMD配合,可以在docker run的时候接受参数

    FROM ubuntu:14.04
    RUN apt-get update && apt-get install -y stress
    ENTRYPOINT ["/usr/bin/stress"]
    CMD []  # 这里可以接收docker run 传的参数

    docker build -t test/command .

    docker run test/command --vm 1 --verbose  # --vm 1 --verbose即是接收的参数

  • 相关阅读:
    gradle 转 maven
    java Multimap
    java 写法推荐
    Python虚拟环境virtualenv
    C# 转换图形为PCX 格式
    微软宣布.NET开发环境将开源 支持Mac OS X和Linux
    写给在Java和.net中徘徊的新手
    HTML5 vs FLASH vs SILVERLIGHT
    我的NHibernate曲折之行
    NHibernate 3 Beginner's Guide
  • 原文地址:https://www.cnblogs.com/buxizhizhoum/p/12269621.html
Copyright © 2011-2022 走看看