dockerfile中常用的命令

  • FROM
    指定 base 镜像。
  • MAINTAINER
    设置镜像的作者,可以是任意字符串。
    COPY将文件从 build context 复制到镜像。
  • COPY 支持两种形式:
//注意:src 只能指定 build context 中的文件或目录。
COPY src dest
COPY ["src", "dest"]
  • ADD
    与 COPY 类似,从 build context 复制文件到镜像。不同的是,如果 src 是归档文件(tar, zip, tgz, xz 等),文件会被自动解压到 dest。
  • ENV
    设置环境变量,环境变量可被后面的指令使用。例如:
ENV MY_VERSION 1.3
RUN apt-get install -y mypackage=$MY_VERSION
  • EXPOSE
    指定容器中的进程会监听某个端口,Docker 可以将该端口暴露出来。我们会在容器网络部分详细讨论。
  • VOLUME
    将文件或目录声明为 volume。我们会在容器存储部分详细讨论。
  • WORKDIR
    为后面的 RUN, CMD, ENTRYPOINT, ADD 或 COPY 指令设置镜像中的当前工作目录。
  • RUN
    在容器中运行指定的命令。
  • CMD
    容器启动时运行指定的命令。
    Dockerfile 中可以有多个 CMD 指令,但只有最后一个生效。CMD 可以被 docker run 之后的参数替换。
  • ENTRYPOINT
    设置容器启动时运行的命令。
    Dockerfile 中可以有多个 ENTRYPOINT 指令,但只有最后一个生效。CMD 或 docker run 之后的参数会被当做参数传递给 ENTRYPOINT。

下面我们来看一个较为全面的 Dockerfile:

root@ubuntu:/home/yj/docker/test1# ls
bunch.tar.gz  dockerfile  tmpfile2
root@ubuntu:/home/yj/docker/test1# vim dockerfile # my dockerfile
FROM centos
MAINTAINER yangjin@qq.com
WORKDIR /testdir
RUN touch tmpfile1
COPY ["tmpfile2","."]
ADD ["bunch.tar.gz","."]
ENV WELCOME "you are in mu container,welcome!"
  • 让centos镜像作为base镜像
  • 设置镜像的作者
  • 设置工作目录
  • 把build context 中的tmpfile2移到镜像当前目录
  • 把build context的bunch.tar.gz解压并移到当前目录
  • 设置WELCOME环境变量

结果展示:

[root@8af6a35aa71e testdir]# cd /testdir/
[root@8af6a35aa71e testdir]# ls
bunch  tmpfile1  tmpfile2

Shell 和 Exec 格式

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

CMD 和 ENTRYPOINT 推荐使用 Exec 格式,因为指令可读性更强,更容易理解。RUN 则两种格式都可以。

RUN,CMD,ENTRYPOITN的使用方法

  1. 使用 RUN 指令安装应用和软件包,构建镜像。
  2. 如果 Docker 镜像的用途是运行应用程序或服务,比如运行一个 MySQL,应该优先使用 Exec 格式的 ENTRYPOINT 指令。
  3. CMD 可为 ENTRYPOINT提供额外的默认参数,同时可利用 docker run 命令行替换默认参数

容器学习 之 dockerfile 命令(七)相关推荐

  1. 容器学习 之 镜像命令(九)

    images 显示镜像列表 root@ubuntu:/home/yj# docker images REPOSITORY TAG IMAGE ID CREATED SIZE my-image late ...

  2. 容器学习Day04-Ubuntu常用命令(二)

    目录 前言 一.软件包管理相关命令 1.dpkg 2.apt 二.磁盘管理相关命令 1.fdisk 2.pvcreate&pvdisplay&pvscan&pvremove 3 ...

  3. Docker(三):Dockerfile 命令详解

    上一篇文章Docker(二):Dockerfile 使用介绍介绍了 Dockerfile 的使用,这篇文章我们来继续了解 Dockerfile ,学习 Dockerfile 各种命令的使用. Dock ...

  4. Docker容器学习梳理--日常操作总结

    使用Docker已有一段时间了,今天正好有空梳理下自己平时操作Docker时的一些命令和注意细节: Docker 命令帮助 $ sudo docker Commands:attach Attach t ...

  5. Docker容器学习笔记一

    Docker容器学习笔记一 狂神说B站视频:https://www.bilibili.com/video/BV1og4y1q7M4?p=1 Docker容器学习笔记二:https://blog.csd ...

  6. 【Docker容器学习笔记一】

    一.Docker概述 1.Docker为什么会出现? 一款产品: 开发–上线 两套环境!应用环境,应用配置! 开发 - 运维. 问题:我在我的电脑上可以允许!版本更新,导致服务不可用!对于运维来说考验 ...

  7. 赵大超的学习周志(七)

    赵大超的学习周志(七) 本周是Java学习的第七周,主要是对JDBC的学习,其中包括对JDBC的概述,JDBC的六大步骤,,基本的CRUD,简易的DBUtils封装,Statement与Prepare ...

  8. docker入门,镜像,容器,数据卷,dockerfile,docker网络,springboot微服务打包docker镜像[狂神yyds]

    docker学习大纲 docker概述 docker安装 docker命令 镜像命令 容器命令 操作命令 - docker镜像 容器数据卷 dockerfile docker网络原理 IDEA整合do ...

  9. Docker容器学习梳理--应用程序容器环境部署

    关于国内Docker镜像,可以参考:Docker容器学习梳理--基础知识(2) 的Docker镜像使用. 如果我们需要在Docker环境下部署tomcat.redis.mysql.nginx.php等 ...

最新文章

  1. 2020互联网校招薪资列表及谈薪注意事项
  2. 驱动列举进程输出到应用层
  3. access开发精要(11)-对象命名规定
  4. pip更新方法(win与linux)版本
  5. 【两种方法】基础实验4-2.7 修理牧场 (25 分)
  6. 听小鹏讲废话之OSI
  7. 记:Ubuntu 14.04 安装32位库支持库失败
  8. C++_类和对象_封装_访问权限_C++中struct和class的区别---C++语言工作笔记037
  9. k8s核心技术-Controller(Deployment)_发布应用---K8S_Google工作笔记0029
  10. 解决Admob Banner首次展示不显示的问题
  11. 谁说 Vim 不好用?
  12. (译)如何使用NSCoding和NSFileManager来保存你的应用程序数据
  13. android svg 线条动画教程,html5 svg制作动态绘制线条动画代码
  14. Latex表格与图片旋转,且标题同时旋转 (表格的标题可设置于表格的上方或下方)
  15. 积木编程安卓app入门 —— 5 分钟学会 App Inventor
  16. 2022.11.27一周总结
  17. 网易易盾web端H5接入
  18. 到底什么是类脑计算?
  19. BZOJ 2140: 稳定婚姻 Tarjan Map
  20. 堆排序:大顶堆和小顶堆 + 前K个高频元素

热门文章

  1. C语言struct中冒号用法
  2. PostgreSQL学习笔记7之函数和操作符三
  3. 【玩转cocos2d-x之三十四】绘图:CCDrawingPrimitives和CCDrawNode
  4. UDT协议实现分析——UDT Socket的创建
  5. 短视频时代不可忽视的幕后功臣竟然是它!
  6. selenium的使用教程3
  7. 用Python实现二叉树,完全二叉树和满二叉树
  8. 使用drawio进行画图真的很方便(WEB版/Chrome APP版/桌面版)
  9. 面试官:限制系统扩展能力的瓶颈有哪些?
  10. RabbitMQ管理(2)——用户管理