转 Dockerfile 常用指令 - 每天5分钟玩转 Docker 容器技术(16)
是时候系统学习 Dockerfile 了。
下面列出了 Dockerfile 中最常用的指令,完整列表和说明可参看官方文档。
FROM
指定 base 镜像。
MAINTAINER
设置镜像的作者,可以是任意字符串。
COPY
将文件从 build context 复制到镜像。
COPY 支持两种形式:
-
COPY src dest
-
COPY ["src", "dest"]
注意:src 只能指定 build context 中的文件或目录。
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:
注:Dockerfile 支持以“#”开头的注释。
构建镜像:
① 构建前确保 build context 中存在需要的文件。
② 依次执行 Dockerfile 指令,完成构建。
运行容器,验证镜像内容:
① 进入容器,当前目录即为 WORKDIR。
如果 WORKDIR 不存在,Docker 会自动为我们创建。
② WORKDIR 中保存了我们希望的文件和目录:
目录 bunch:由 ADD 指令从 build context 复制的归档文件 bunch.tar.gz,已经自动解压。
文件 tmpfile1:由 RUN 指令创建。
文件 tmpfile2:由 COPY 指令从 build context 复制。
③ ENV 指令定义的环境变量已经生效。
在上面这些指令中,RUN、CMD、ENTRYPOINT 很重要且容易混淆,下节专门讨论。
小结:
1. dock 搭建 依赖 Dockerfile 和 base 目录。
2. dock 搭建 有镜像一说,也就是 按照一级级往上搭建,如果可以复用镜像的话,则会复用该级的镜像,如果不可以复用的,则会中间的镜像,则会想remove ,在重新创建
3. 顺序如下
-
从 base 镜像运行一个容器。
-
执行一条指令,对容器做修改。
-
执行类似 docker commit 的操作,生成一个新的镜像层。
-
Docker 再基于刚刚提交的镜像运行一个新容器。
-
重复 2-4 步,直到 Dockerfile 中的所有指令执行完毕。
4.如何调试,依赖于每一级的调试
5.使用dock history 可以查看 镜像的历史。
相关文章
- 硬货 | 一文弄懂 Docker 容器技术与常用命令
- Docker最全教程——.NET5进一步拥抱容器技术
- 淘东电商项目(38) -Docker下安装ES&Kibana(一次填完所有的坑)
- 2022年 Docker Swarm还有什么存在的意义 ?
- Docker实践者不能错过2014 Container技术大会的九大理由!
- Docker技术入门与实战(第2版)3.2 查看镜像信息
- Docker技术入门与实战(第2版)导读
- [转]深入理解Docker ulimit(docker容器启动报错library initialization failed - unable to allocate file descriptor table - out of memory问题解决)
- 牛批!阿里 P8 熬夜冠军手码的 Docker 容器 +k8s 技术 PDF, 你还等啥呢
- docker部署常见应用
- Docker容器(六)——创建docker私有化仓库
- Docker环境搭建与使用:docker配置镜像加速(已阿里云为例)
- Docker环境搭建与使用:docker的简介与架构以及安装docker
- 狂神Docker视频学习笔记(基础篇)
- 《Docker技术入门与实战》——1.3 虚拟化与Docker
- 《Docker技术入门与实战》——3.5 创建镜像
- Ubuntu 18.04在已经安装Docker CE后如何安装NVIDIA-Docker,以使docker容器内可以使用宿主机显卡
- Docker 错误 docker: invalid reference format. 的解决
- 浅析如何解决终端输入长命令不换行覆盖(Docker容器内输入长命令折行覆盖)问题:如何设置docker容器tty终端窗口大小-Linux stty命令设置串口终端行列数
- 浅析Docker数据管理-数据库容器化并持久化:数据卷概念、创建数据卷的2种方式、docker volume用法
- 2、linux下安装Docker教程并换成阿里云镜像仓库源
- Ubuntu20.04 安装 Docker
- 基于Docker及Kubernetes技术构建容器云(PaaS)平台概述