什么是docker
docker是一种容器,这篇文章对容器的定义是:
容器是一组运行在Linux操作系统上并使用命名空间进程进行分隔的进程,有了容器就无需再启动和维护虚拟机。与虚拟机技术相比,容器的最大不同之处在于打包格式和可移植性。构建容器的目的在于为现代基础设施降低占用空间和启动时间、提供重用性、更好地利用服务器资源,并更好地集成到整个开发生态系统中(例如持续集成和交付生命周期)。
容器相对于虚拟机有以下优点:
- 更高效地利用系统资源
- 更快的启动速度
- 一致的运行环境
- 持续的交付和部署
- 更轻松的迁移
- 维护和扩展的便利性
基本概念
镜像
Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
镜像分为黑箱镜像和dockerfile。
前者通过实际创建和配置docker容器并通过docker commit
记录每个版本的变更,优点是简单直观,缺点是不能记录在基础镜像上做了哪些操作,并且在多次修改之后,镜像会变得很臃肿。
dockerfile是镜像的配置文件,部署时docker根据配置内容生成容器,优点是可以清楚地记录每次修改的内容、镜像体积很小,缺点是编写时比较复杂。
容器
容器是镜像运行的实体。
仓库
分发镜像的服务。
编排
容器的编排包含如下一系列任务:
- 调度(包括部署、复制、扩展、复活、重新调度、升级、降级等)
- 资源管理(内存、CPU、存储空间、端口、IP、镜像等)
- 服务管理(即使用标签、分组、命名空间、负载均衡和准备就绪检查将多个容器编排在一起)
安装
我在黑苹果下安装。Mac下安装docker有两种方式:Docker for Mac或Docker Toolbox。前者最简单,后者在前者的系统要求不能被满足的情况下使用。后者的卸载比较麻烦,具体参照这里。
我用前种方式安装,启动时报错:
com.docker.osx.hyperkit.linux failed to start
解决方法是到BIOS里打开VT特性,有说法说黑苹果不支持VT,我这里是可以的。
镜像加速器
一般用阿里云的镜像服务。
docker的使用
拉取镜像
|
|
列出镜像
|
|
创建容器
|
|
终止容器
exit
或ctrl-d
启动已终止容器
|
|
attach运行中的容器
|
|
detach运行中的容器
ctrl+p ctrl+q
或者:
|
|
查看容器
|
|
删除已终止容器
|
|