dockerfile 文件编写

未匹配的标注
  • dockerfile 是用来构建 docker 镜像的文件

    编写步骤

    1. 编写 dockerfile 文件
    2. docker build 构建成为一个镜像
    3. docker run 运行镜像
    4. docker push 发布镜像 (可以发布到 dockerhub 或者是 阿里云镜像仓库)

dockerfile 文件

  • 每一个保留关键字 (指令) 都必须是大写

  • 从上往下开始执行

  • # 表示注释

  • 每一个指令都会创建一个镜像层

  • 常用指令:

    FROM         # 基础镜像
    MAINTAINER   # 镜像作者, 一般是姓名<邮箱>
    RUN          # 构建镜像的时候需要运行的命令
    ADD          # 构建镜像的时候, 需要添加的内容, 比如要在 centos 镜像中添加一个 NGINX, 如果添加的是一个压缩包的话, 会自动解压
    WORKDIR      # 镜像的工作目录
    VOLUME       # 挂载的目录
    EXPOSE       # 端口配置
    CMD          # 容器启动的时候需要运行的命令, 只有最后一个会生效, 这个最后一个生效, 并不是指在 dockerfile 文件中, 在 dockerfile 文件中仍然可以有多个 CMD 命令, 指的是在使用 docker run 的时候, 后面不能加命令, 如果加了, 那么 docker run 后面的命令将会替换掉 dockerfile 文件中的命令
    ENTRYPOINT   # 容器启动的时候需要运行的命令, 可以追加命令
    ONBUILD      # 当构建一个被继承的 dockerfile 的时候, 会运行 ONBUILD 指令
    COPY         # 将文件拷贝到镜像中
    ENV          # 构建的时候设置环境变量
  • 案例 (尝试构建自己的 centos)

    • 编写 dockerfile 文件

      FROM centos  # 基础镜像是 centos
      MAINTAINER xiaosheng<1029739052@qq.com> # 作者信息
      ​
      ENV MYPATH /usr/local # 自定义一个变量 MYPATH, 值是 /usr/local
      WORKDIR $MYPATH # 指定工作目录, 即用户当进去 centos 后所在的目录
      ​
      RUN yum -y install vim # 安装 vim
      RUN yum -y install net-tools # 安装 net-tools
      ​
      EXPOSE 80 # 暴露端口
      CMD echo $MYPATH
      CMD echo "===end===="
      CMD /bin/bash
    • 开始构建

      docker build -f dockerfile文件的地址 -t 镜像名:[版本号]

    • 使用 docker history 镜像id 来查看镜像的构建历史

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~