Docker的Logo设计为蓝色鲸鱼,拖着许多集装箱。
鲸鱼可看作为宿主机,集装箱可理解为相互隔离的容器,每个集装箱中都包含自己的应用程序
Docker的设计宗旨:Build,Ship and Run Any App,Anywhere,
即通过对应用组件的封装、发布、部署、运行等生命周期的管理,达到应用组件级别的“一次封装,到处运行”的目的。这里的组件,既可以是一个应用,也可以是一套服务,甚至是一个完整的操作系统
容器是在linux上本机运行,并与其他容器共享主机的内核,它运行的是一个独立的进程,不占用其他任何可执行文件的内存,非常轻量。
虚拟机运行的是一个完整的操作系统,通过虚拟机管理程序对主机资源进行虚拟访问,相比之下需要的资源更多
| 特性 | Docker容器 | 虚拟机 |
| 启动速度 | 秒级 | 分钟级 |
| 计算能力损耗 | 几乎无 | 损耗 50%左右 |
| 系统支持量(单机) | 上千个 | 几十个 |
| 性能 | 接近原生 | 弱于 |
| 隔离性 | 资源隔离/限制 | 完全隔离 |
容器在内核中支持2种重要技术
docker本质就是宿主机的一个进程,docker是通过namespace(命名空间)实现资源隔离,通过cgroup实现资源限制,通过写时复制技术(copy-on-write)实现了高效的文件操作(类似虚拟机的磁盘比如分配500g并不是实际占用物理磁盘500g)
| namespace | 系统调用参数 | 隔离内容 |
| UTS | CLONE_NEWUTS | 主机名与域名 |
| IPC | CLONE_NEWWIPC | 信号量、消息队列和共享内存 |
| PID | CLONE_NEWPID | 进程编号 |
| NETWORK | CLONE_NEWNET | 网络设备、网络栈、端口等 |
| MOUNT | CLONE_NEWNS | 挂载点(文件系统) |
| USER | CLONE_NEWUSE | 用户和用户组(3.8以后的内核才支持) |
Docker 的镜像、容器、日志等内容全部都默认存储在 /var/lib/docker
- 关闭防火墙
- systemctl stop firewalld.service
- setenforce 0

- #安装依赖包
- yum install -y yum-utils device-mapper-persistent-data lvm2
- -------------------------------------------------------------------
- yum-utils:提供了 yum-config-manager 工具。
- device mapper: 是Linux内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。
- device mapper存储驱动程序需要 device-mapper-persistent-data 和 lvm2

- #设置阿里云镜像源
- yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo


- #安装 Docker-CE并设置为开机自动启动
- yum install -y docker-ce docker-ce-cli containerd.io
- docker-ce-20.10.18
-
- systemctl start docker.service
- systemctl enable docker.service
-
- #安装好的Docker系统有两个程序,Docker服务端和Docker客户端。其中Docker服务端是一个服务进程,负责管理所有容器。 Docker客户端则扮演着Docker服务端的远程控制器,可以用来控制Docker的服务端进程。大部分情况下Docker服务端和客户端运行在一台机器上


查看 docker 版本信息:docker version

docker 信息查看:docker info

- 镜像加速下载
- 浏览器访问 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 获取镜像加速器配置

