Docker 说明与安装
Docker 说明与安装
一、什么是容器?
容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行。
一个容器包含了完整的运行时环境:
- 应用程序本身
- 其所有依赖(库、配置文件、二进制文件等)
容器将应用程序与其运行环境一起打包,抽象掉了操作系统和底层环境的差异,实现“一次构建,到处运行”。
二、容器 vs 虚拟机
容器 | 虚拟机 |
---|---|
共享宿主机内核 | 每个虚拟机有独立内核 |
轻量、启动快 | 重量级、启动慢 |
资源占用少 | 资源占用多 |
适用于应用隔离 | 适用于完整系统隔离 |
容器不是虚拟化整个操作系统,而是虚拟化用户空间。
三、为什么需要容器?
现代应用通常由多个服务组成(如数据库、缓存、消息队列等),并部署在多种环境中(开发机、测试服务器、生产云平台等)。这导致一个复杂的服务-环境矩阵,管理和部署非常困难。
容器通过标准化封装解决了环境一致性问题,就像集装箱标准化了货物运输一样:
- 一次打包,到处运行
- 环境隔离,依赖不冲突
- 提升部署效率和可移植性
四、容器的标准化:OCI
2015年,由Google、Docker、CoreOS、IBM、微软、红帽等公司共同发起成立OCI(Open Container Initiative),制定容器运行时和镜像格式的开放标准。
主流容器运行时:
- lxc:Linux 老牌运行时
- runc:Docker 开发,符合 OCI 标准,是 Docker 默认运行时
- rkt:CoreOS 开发,也符合 OCI 标准
五、什么是 Docker ?
Docker 最初是 dotCloud 公司内部项目,2013年开源,使用 Go 语言编写。
Docker 是一个开发、交付和运行应用程序的开放平台,它实现了应用与基础设施的解耦,使软件交付更快速、可靠。
六、Docker 的优势
- 更快速的交付和部署
- 镜像标准化,开发即生产
- 启动秒级,提升开发测试效率
- 更高效的虚拟化
- 基于内核虚拟化,无需 Hypervisor
- 性能接近原生
- 更轻松的迁移和扩展
- 支持跨平台运行(物理机、虚拟机、公有云、私有云等)
- 更简单的管理
- 增量更新,易于维护
- 自动化部署和管理
七、Docker 架构
Docker 采用 C/S 架构:
核心组件:
- Docker客户端:如
docker
命令或 REST API - Docker守护进程:
dockerd
,负责构建、运行、管理容器 - Docker镜像:只读模板,用于创建容器
- Docker容器:镜像的运行实例
- Registry:镜像仓库,如 Docker Hub、阿里云、腾讯云等
八、Docker 安装
1、关闭防火墙和 selinux
2、下载阿里源
[root@docker ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@docker ~]# yum -y install epel-release
3、安装系统工具
[root@docker ~]# yum install -y yum-utils
4、添加软件源信息
[root@docker ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5、安装 Docker
[root@docker ~]# yum install docker-ce
6、启动 Docker
[root@docker ~]# systemctl restart docker
[root@docker ~]# systemctl enable docker
7、配置加速器
[root@docker ~]# cd /etc/docker/
[root@docker docker]# vim daemon.json[root@docker ~]# systemctl daemon-reload
[root@docker ~]# systemctl restart docker
{"registry-mirrors": ["https://docker.m.daocloud.io","https://dockerproxy.com","https://docker.mirrors.ustc.edu.cn","https://docker.nju.edu.cn"]
}
九、总结
- 容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同
的方式运行 - 容器与虚拟化有本质区别,容器时共享宿主机的内核空间,隔离用户空间,而虚拟化是构建一
个完全独立的虚拟基础设施环境 - 容器使软件具备了超强的可移植能力