zoukankan      html  css  js  c++  java
  • 【Docker】Dockerfile基础知识,相信你一定有所收获

    Dockerfile常用命令

    FROM: 继承基础镜像
    MAINTAINER:镜像制作作者信息
    RUN: 用来执行shell命令
    EXPOSE: 暴露端口号
    CMD: 启动容器默认执行的命令,会被覆盖
    ENTRYPOINT: 启动容器真正执行的命令,不会被覆盖
    VOLUME:创建该挂载点
    ENV: 配置环境变量
    ADD: 复制文件到容器,一般拷贝文件,压缩包自动解压
    COPY:复制文件到容器,一般可拷贝目录
    WORKDIR:设置容器的工作目录
    USER:容器使用的用户
    

    接下来,列举几个Dockerfile的实例。

    Dockerfile实例

    1.使用RUN创建一个用户

    Dockerfile文件内容如下所示。

    FROM centos:6
    MAINTAINER binghe
    RUN useradd binghe
    

    执行构建,如下所示。

    docker build -t centos:user .
    

    2.使用ENV定义环境变量并用CMD执行命令

    Dockerfile文件内容如下所示。

    FROM centos:6
    MAINTAINER binghe
    RUN useradd binghe
    RUN mkdir binghe
    ENV envir=test version=1.0
    CMD echo "envir:$envir version:$version"
    

    执行构建并启动测试:

    #执行构建
    docker build -t centos:evn-cmd .
    #启动镜像验证EVN和CMD
    docker run centos:env-cmd
    

    3.使用ADD添加一个压缩包,使用WORKDIR改变工作目录

    FROM nginx
    MAINTAINER binghe
    ADD ./index.tar.gz /usr/share/nginx/html/
    WORKDIR /usr/share/nginx/html
    

    4.使用COPY拷贝目录

    使用COPY拷贝指定目录下的所有文件到容器,不包括本级目录。此时只会拷贝webroot下的所有文件,不会将webroot拷贝过去:

    FROM nginx
    MAINTAINER binghe
    ADD ./index.tar.gz /usr/share/nginx/html/
    WORKDIR /usr/share/nginx/html
    COPY webroot/ .
    

    5.设置启动容器的用户

    设置启动容器的用户,在生产环境中一般不建议使用root用户启动容器,所以,可以根据公司业务场景自定义启动容器的用户:

    FROM centos:6
    MAINTAINER binghe
    ADD ./index.tar.gz /usr/share/nginx/html/
    WORKDIR /usr/share/nginx/html
    COPY webroot/ .
    RUN useradd -m tomcat -u 1001
    USER 1001
    

    6.使用VOLUME创建容器可挂载点

    FROM centos:6
    MAINTAINER binghe
    VOLUME /data
    

    挂载目录到/data,注意:对于宿主机路径,要写绝对路径:

    docker run -ti --rm -v `pwd` /web:/data centos:volume bash
    

    写在最后

    如果觉得文章对你有点帮助,请微信搜索并关注「 冰河技术 」微信公众号,跟冰河学习Spring注解驱动开发。公众号回复“spring注解”关键字,领取Spring注解驱动开发核心知识图,让Spring注解驱动开发不再迷茫。

  • 相关阅读:
    小白学编程,C++ 初始化的坑,你避开了吗?
    学完C语言还是懵的?大学生:我可能学了个假的C语言
    不知道如何入门编程?最全在线教程网站汇总来了,还不赶快收藏
    Linux 之父对 C++ 进行了炮轰,C++不值得推荐?
    没有内存泄漏的C++代码,如何用RAII编写,你知道吗
    菜鸟学编程,不懂C++ this指针?还不赶快来学一学
    在7天-第2天逐步学习MVC(模型视图控制器)
    ASP。NET MVC vs ASP。NET WebForm性能比较
    学习MVC项目在7天-奖金的第二天
    学习MVC项目在7天-奖金的第一天
  • 原文地址:https://www.cnblogs.com/binghe001/p/13086932.html
Copyright © 2011-2022 走看看