- lxc: lxc 是最早的 linux 容器技术,早期版本的 docker 直接使用 lxc 来实现容器的底层功能。虽然使用者相对较少,但 lxc 项目仍在持续开发演进中
- libcontainer: docker 从 0.9 版本开始自行开发了 libcontainer 模块来作为 lxc 的替代品实现容器底层特性,并在 1.10 版本彻底去除了 lxc。在 1.11 版本拆分出 runc 后,libcontainer 也随之成为了 runc 的核心功能模块, runc 后续变成了容器标准
- moby: moby 是 docker 公司发起的开源项目,其中最主要的部分就是同名组件 moby,事实上这个 moby 就是 dockerd 目前使用的开源项目名称, docker 项目中的 engine(dockerd)仓库现在就是从 moby 仓库 fork 而来的,使用 containerd 作为运行时标准 https://mobyproject.org/
- docker-ce: docker 的开源版本, CE 指 Community Edition。 docker-ce 中的组件来自于 moby、 containerd 等其他项目 https://www.docker.com/pricing/
- docker-ee: docker 的收费版本, EE 指 Enterprise Edition,其基础组件来源和docker-ce 是一样的,但附加了一些其他的组件和功能
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程 API 来管理和创建 Docker 容器,Docker 容器通过 Docker 镜像来创建
- Docker Registry:Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。 Docker Hub 供了庞大的镜像集合供使用
- Docker daemon:Docker daemon 是服务器组件,是 Docker 最核心的后台进程,我们也把它称为守护进程
- Docker Client:Docker 客户端通过命令行或者其他工具使用 Docker API 与 Docker 的守护进程通信
- Docker Host:一个物理或者虚拟的机器用于执行 Docker 守护进程和容器
- Docker Images:Docker 镜像是用于创建 Docker 容器的模板
- Docker Container:容器是独立运行的一个或一组应用
云时代需要我们针对
数据量疯狂增长
,处理能力快速增加
,软件需求爆发式增长
这些诉求有一套针对的解决方案:
- 我们要处理海量的数据,如何处理?
购买大量的服务器,并研发对应软件- 开发的需求需要频繁的变更上线,如何才能将修改的代码快速的分发到几百或者几千台服务器?如何共享软件?
搞一个中心仓库,让各个服务器去下载软件包,安装,所以 CentOS 搞了 yum 仓库,docker 设计了镜像仓库, docker hub 是公共的托管仓库。- 软件设计好以后,怎么快速安装启动,有问题回滚?
将 docker 需要的所有信息设计一套软件格式,把所有的依赖搞进去,并打上版本标签,这样不会换一个服务器各种问题,所以 Docker 设计了镜像。- 不同的开发环境怎么搭建?
docker 设计了镜像来应对,镜像里面存放了需要运行的环境,就像我们的 iPhone 内置 ios,我们的华为 mate 50 内置鸿蒙一样,一条命令就可以完成某个环境的搭建
sever版本以centos8.0为例:
cat /etc/*release*
:检查操作系统uname -a
:检查cpu架构- 卸载旧版本(一般不需要):
sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
(斜杠两边要有空格)sudo yum remove docker-ce docker-ce-cli containerd.io dockerbuildx-plugin docker-compose-plugin docker-ce-rootless-extras
:卸载历史版本- 删除这些文件夹的内容(如果有的话):
/var/lib/docker
/var/lib/containerd
/data/var/lib/docker
/etc/docker/daemon.jsonyum install -y yum-utils device-mapper-persistent-data lvm2
:安装相关工具sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
:配置仓库ll /etc/yum.repos.d/
:检查仓库是否多了一个docker-ce.reposed -i 's@//download.docker.com@//mirrors.ustc.edu.cn/docker-ce@g' /etc/yum.repos.d/docker-ce.repo
:配置国内源sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
:安装新版本sudo systemctl daemon-reload
:配置加载sudo systemctl start docker
:启动服务sudo systemctl enable docker
:开启启动sudo systemctl status docker
:查看服务状态docker version
或docker info
查看相关信息- 对于systemd中在配置文件/etc/docker/daemon.json中加入:
{ "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/", "http://hub-mirror.c.163.com", "https://cr.console.aliyun.com" ] }
- 1
- 2
- 3
- 4
- 5
- 6
sudo systemctl daemon-reload
:配置加载sudo systemctl restart docker
:重新启动服务
- 改变docker数据目录:在配置文件/etc/docker/daemon.json中加入(注意json格式不要忘了前面的逗号):
{ "data-root": "目录" }
- 1
- 2
- 3
GUI版本安装以win11为例:
- 确保CPU虚拟化已启动
- 勾选:适用于linux的windows子系统 和 虚拟化平台
- 重启
- powershell管理员运行检查
wsl --status
如果是1就wsl --update
更新,wsl --set-default-version 2
设置默认为2,- Windows商店下载Ubuntu,安装
- 下载docker安装