了解了用于构建 Dockerfile 的基本方法后,我们在编写 Dockerfile 的时候并没有一些强制要求,导致很多构建的镜像不符合一些最佳实践,典型的就是镜像构建的层数非常多,对一些基本指令的区别不是很清楚。下面介绍 Dockerfile 在实际使用中的一些最佳的实践方式。
[阅读全文]Docker的底层技术
Docker最初实现是基于 LXC,从 0.7 版本以后开始去除 LXC
,转而使用自行开发的 libcontainer,从 1.11 开始,则进一步演进为使用 runC 和 containerd。
Docker 本质就是宿主机的一个进程,Docker 是通过 namespace
实现资源隔离,通过cgroup
实现资源限制,通过写时复制技术(copy-on-write)实现了高效的文件操作。
传统的虚拟机通过在宿主主机中运行 hypervisor 来模拟一整套完整的硬件环境提供给虚拟机的操作系统。虚拟机系统看到的环境是可限制的,也是彼此隔离的。 这种直接的做法实现了对资源最完整的封装,但很多时候往往意味着系统资源的浪费。 例如,以宿主机和虚拟机系统都为 Linux 系统为例,虚拟机中运行的应用其实可以利用宿主机系统中的运行环境。
[阅读全文]使用Docker构建应用 | 第五篇:查看Dokcer容器使用的资源
在容器的使用过程中,如果能及时的掌握容器使用的系统资源,无论对开发还是运维工作都是非常有益的。幸运的是 docker 自己就提供了这样的命令:docker stats。
[阅读全文]使用Docker构建应用 | 第四篇:Docker容器
容器
(Container)是Docker
的核心组件之一,它是用于运行镜像
的一个沙箱环境,是一个从镜像
创建的应用运行实例,镜像
打包、构建完成后最终都会运行于容器
中。容器
具有良好的隔离性,容器
之间是相互隔离、互不可见。本文将介绍Docker
容器的创建与管理,并以容器的生命周期为主线介绍容器的创建、管理、停止,到最终删除。
使用Docker构建应用 | 第三篇:Docker镜像
1. 什么是Docker镜像
镜像
是一个只读的层(layer
),由文件系统叠加构成。而镜像
又是容器
(Container)的构成单元,我们一般会将应用构建成标准的镜像
组件,一或多个镜像
叠加又构成了容器
。
使用Docker构建应用 | 第二篇:Dockerfile详解
1. Dockerfile文件格式
Dockerfile
文件格式如下:
# Comment
INSTRUCTION arguments
# 注释
指令 参数
Dockerfile
文件中指令不区分大小写,但为了更易区分,约定使用大写
形式。
Docker 会依次执行Dockerfile
中的指令,文件中的第一条指令必须是FROM
,FROM
指令用于指定一个基础镜像。