zoukankan      html  css  js  c++  java
  • Docker实战(三)--Dockerfile构建带nginx的centos镜像,并挂载

    1.什么是dockerfile

    个人理解Dockerfile其实应该叫 image file,因为Dockerfile 其实是一个用来构建镜像的文本文件

    FROM centos
    MAINTAINER zengyin<zengyin@qq.com>
    ENV MYPATH /usr/local
    WORKDIR $MYPATH
    RUN yum -y install vim
    RUN yum -y install net-tools
    RUN yum -y install nginx
    
    VOLUME /etc/nginx/
    EXPOSE 80
    
    CMD echo $MYPATH
    CMD echo "....end...."
    CMD /bin/bash

    以上文件其实是以centos为基础镜像,安装vim、nginx、net-tools,并将nginx以mounts的方式映射到本地随机生成的路径,暴露80端口

    2.常用指令

    • FROM:定制的镜像都是基于 FROM 的镜像,上面后续的操作都是基于 centos。

    • MAINTAINER:作者(维护者)

    • WORKDIR:指定进入容器后的默认路径

    • RUN:用于安装软件包

    • COPY:复制指令,从上下文目录中复制文件或者目录到容器里指定路径

    • ADD:ADD 指令和 COPY 的使用格式一致,会自动复制并解压(同样需求下,官方推荐使用 COPY)

    • CMD:用于运行程序,容器启动后,默认执行的命令。“默认”意味着:如果docker run 没有指定任何的执行命令或者dockerfile中也没有ENTRYPOINT时,执行

    • ENTRYPOINT正式的容器启动后的执行体即:如果docker run后有东西,那么后面的全部会被作为ENTRYPOINT的参数;如果run后面没有,但CMD后面有,那么CMD的内容会作为ENTRYPOINT的参数;如果要在docker run时覆盖ENTRYPOINT,使用--entrypoint即可

    • ENV:设置环境变量,那么在后续的指令中,就可以使用这个环境变量

    • ARG:构建参数,与 ENV 作用一至。不过作用域不一样。ARG 设置的环境变量仅对 Dockerfile 内有效

    • VOLUME:定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。

    • EXPOSE:仅仅只是声明端口

  • 相关阅读:
    一致性哈希算法
    Discourse 的标签(Tag)只能是小写的原因
    JIRA 链接 bitbucket 提示错误 Invalid OAuth credentials
    JIRA 如何连接到云平台的 bitbucket
    Apache Druid 能够支持即席查询
    如何在 Discourse 中配置使用 GitHub 登录和创建用户
    Apache Druid 是什么
    Xshell 如何导入 PuTTYgen 生成的 key
    windows下配置Nginx支持php
    laravel连接数据库提示mysql_connect() :Connection refused...
  • 原文地址:https://www.cnblogs.com/shadow-yin/p/14152021.html
Copyright © 2011-2022 走看看