zoukankan      html  css  js  c++  java
  • 使用Dockerfile构建镜像

    Dockerfile文件内容

    FROM centos
    RUN <命令行命令>     # 多个命令之间用&&连接
    COPY <源路径>  <目标路径>      # 从上下文目录中复制文件或目录到容器里制定路径
    ADD  <源路径>  <目标路径>        # 功能同ADD类似,官方推荐COPY
    CMD  <命令行命令>    # 类似于RUN,RUN是在docker build时运行,CMD是在docker run时运行。作用是为启动的容器制定默认要运行的程序,如果Dockerfile中有多个CMD指令,仅最后一个生效,同时可被docker run命令行参数中指定要运行的程序所覆盖。
    ENTRYPOINT  <命令行命令>   # 类似于CMD,但是在docker run的时候不会被覆盖。可以搭配CMD使用
    ENV   <key1>=<value1> <key2>=<value2>   # 设置环境变量,例如ENV NODE_VERSION 7.2.0  ,后续指令中可以通过$NODE_VERSION引用,尽量使用环境变量,不使用软连接
    ARG   # 与 ENV 作用一至。不过作用域不一样。ARG仅针对Dockerfile内有效,镜像内无效
    VOLUME  ["<路径1>", "<路径2>"]     # 定义匿名数据卷,在启动容器时忘记挂载数据卷,会自动挂在口上到匿名卷
    EXPOSE  <端口>        # 仅仅只是声明一下端口,以方便使用人员配置映射
    WORKDIR  <指定工作目录>   # 进去后所在的目录
    
    

    容器内启动程序及参数

    假设已经通过以下dockerfile构建了nginx镜像

    FROM nginx
    
    ENTRYPOINT ["nginx", "-c"] # 定参
    CMD ["/etc/nginx/nginx.conf"] # 变参 
    
    • 不传参运行
      docker run nginx 容器内会默认运行以下命令来启动进程 nginx -c /etc/nginx/nginx.conf
    • 传参运行
      docker run nginx -c "/etc/nginx/new.conf" 容器内会默认运行以下命令来启动进程 nginx -c /etc/nginx/new.conf

    构建命令

    docker build -t nginx:v3 .

    CMD 一般直接使用命令,不需要加引号,否则会导致文件找不到,可以以下两种方式

    CMD /usr/bin/python3 /home/timed_task/xxx.py
    CMD ["/usr/bin/python3", "/home/timed_task/xxx.py"]
    

    耗时的操作放在Dockerfile的上面,修改尽量修改下面,因为docker重建的时候会根据文件的先后顺序进行缓存

    镜像不支持中文的,需要加全局变量ENV

    ENV LANG C.UTF-8

    生成镜像后使用 docker run -dti --name=xxx --net=host abc:v1 启动容器,不需要加/bin/bash。

    如果需要修改CMD,只需在后面加上命令,如 python3 aaa.py,即可覆盖Dockerfile中的CMD

    构建镜像一般会先更换镜像的yum源

    RUN rm -rf /etc/yum.repos.d/*
    COPY Centos-8.repo /etc/yum.repos.d
    RUN yum clean all
    RUN yum makecache
    
  • 相关阅读:
    微服务概述
    Airflow 配置celery+rabbitmq和celery+redis
    CentOS7安装Airflow
    Python如何import其它.py文件及其函数
    ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
    CentOS7安装MySQL
    Hadoop完全分布式环境下,DataNode进程正常启动,但是网页上不显示DataNode节点
    <一> windbg简介
    几个资料下载网站
    使用VS2012 C++ 进行单元测试
  • 原文地址:https://www.cnblogs.com/pyweb/p/14593559.html
Copyright © 2011-2022 走看看