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 的优势

  1. 更快速的交付和部署
    • 镜像标准化,开发即生产
    • 启动秒级,提升开发测试效率
  2. 更高效的虚拟化
    • 基于内核虚拟化,无需 Hypervisor
    • 性能接近原生
  3. 更轻松的迁移和扩展
    • 支持跨平台运行(物理机、虚拟机、公有云、私有云等)
  4. 更简单的管理
    • 增量更新,易于维护
    • 自动化部署和管理

七、Docker 架构

Docker 采用 C/S 架构

核心组件:
  1. Docker客户端:如 docker 命令或 REST API
  2. Docker守护进程dockerd,负责构建、运行、管理容器
  3. Docker镜像:只读模板,用于创建容器
  4. Docker容器:镜像的运行实例
  5. 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"
        ]
}

九、总结

  1. 容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同
    的方式运行
  2. 容器与虚拟化有本质区别,容器时共享宿主机的内核空间,隔离用户空间,而虚拟化是构建一
    个完全独立的虚拟基础设施环境
  3. 容器使软件具备了超强的可移植能力
Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐