来源:21CTO
ID:www_21cto_com
Docker 作为新瓶装旧酒的一门技术,用简单便捷的操作极大改变了软件开发的流程与生态环境,本文我们就来了解一下 。注:Docker 目前已改名为 Moby 。
更新历史
- 2017.05.01: 完成初稿
快速入门
- Docker 最初 dotCloud 公司内部的一个业余项目
- Docker 基于 Go 语言
- Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案
- Docker 的基础是 linux 容器(LXC)等技术
- Docker 容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多
- Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器
下面的图片比较了 Docker 和传统虚拟化方式的不同之处,可见容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现 。
文章插图
文章插图
容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小 。传统虚拟机方式运行 10 个不同的应用就要起 10 个虚拟机,而Docker 只需要启动 10 个隔离的应用即可 。
主要优势为:
- 更快速的交付和部署 - 容器成为了最小单位
- 更高效的虚拟化 - 内核级虚拟化
- 更轻松的迁移和拓展
- 更简单的管理
安装
官方网站提供了 mac, Linux 和 windows 版本的安装教程 。我们只要跟着官方文档即可,这里不再赘述 。
不过需要提一下 Kitematic 这个图形化工具(官方给出的定义是 Visual Docker Container Management on Mac & Windows),对于熟悉和了解 Docker 是很好的帮助,大家可以体验一下 。
守护进程
运行 Docker 守护进程时,可以用 -H 来改变绑定接口的方式,比如 sudo /usr/bin/docker -d -H tcp://0.0.0.0:2375,如果不想每次都输入这么长的命令,需要加入以下环境变量 export DOCKER_HOST="tcp://0.0.0.0:2375"
图形用户界面
虽然我们可以用命令来控制 docker,但是如果能有一个 web 管理界面,操作什么的会方便很多,比较常见的有
- Shipyard
- Potainer
基本概念
基本概念主要有三个:
- 镜像(Image)
- 一个只读的模板,镜像可以用来创建 Docker 容器
- 用户基于镜像来运行自己的容器 。镜像是基于 Union 文件系统的层式结构
- 可以简单创建或更新现有镜像,或者直接下载使用其他人的 。可以理解为生成容器的『源代码』
- 容器(Container)
- 容器是从镜像创建的运行实例,在启动的时候创建一层可写层作为最上层(因为镜像是只读的)
- 可以被启动、开始、停止、删除 。每个容器都是相互隔离的、保证安全的平台
- 可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序
- 仓库(Registry)
- 集中存放镜像文件的场所,可以是公有的,也可以是私有的
- 最大的公开仓库是 Docker Hub
- 国内的公开仓库包括 Docker Pool 等
- 当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了
- Docker 仓库的概念跟 Git 类似,注册服务器可以理解为 GitHub 这样的托管服务
另外 Docker 采用的是客户端/服务器架构,客户端只需要向 Docker 服务器或守护进程发出请求即可完成各类操作 。那么问题来了,我们能用 Docker 来做什么呢?我们可以:
- 统一、优化和加速本地开发和构建流程
- 保证不同的环境中可以得到相同的运行结果
- 创建隔离环境用于测试
Docker 可以提供的隔离有:
- 文件系统隔离:每个容器都有自己的 root 文件系统
- 进程隔离:每个容器都运行在自己的进程环境中
- 网络隔离:容器间的虚拟网络接口和 IP 地址都是分开的
- 资源隔离和分组:使用 cgroups 将 CPU 和内存之类的资源独立分配给每个 Docker 容器
常用命令
- 查看 docker 状态 sudo docker info
- 查看系统中正在运行的容器的列表 docker ps
- 加上 -a 可以列出所有容器
推荐阅读
- 谷歌最流行的序列化格式:Protobuf 语言指南
- 简单易懂的葡萄酒指南,让你告别尴尬式评价“哇!真好喝!”
- 最简单修改Docker存储位置
- 附推荐价格 网上高性价比大米选购指南
- 红茶是属于发酵茶吗?
- 如何使用Docker部署MongoDB副本集
- 春运路上的健康指南 避免久坐导致下肢浮肿
- 油烟机购买指南——选择恐惧症的患者看过来,只买对的不买贵的
- 夏季减肥指南,普洱茶 消除多余脂肪的高手
- 四款完全免费的音频效果器