5 Docker的原理
5.1 Namespace
Namespace(命名空间)提供了一个独立的工作环境,Docker使用Namespace来隔离容器,使得每个容器都有自己独立的系统资源(如进程ID、主机名、网络等)。
- PID Namespace:隔离进程ID,保证每个容器有独立的进程树。
- NET Namespace:隔离网络资源,使每个容器有独立的网络栈。
- IPC Namespace:隔离进程间通信资源,如信号量、消息队列等。
- MNT Namespace:隔离文件系统挂载点,使每个容器有独立的文件系统视图。
- UTS Namespace:隔离主机名和域名,使每个容器有独立的主机名。
5.2 Control Groups (cgroups)
Control Groups(cgroups)是Linux内核的功能,Docker使用cgroups来限制和隔离容器的资源使用(如CPU、内存、磁盘I/O等)。
- 资源限制:通过cgroups,可以为每个容器设置资源使用上限,防止单个容器消耗过多资源。
- 资源监控:cgroups提供了详细的资源使用统计,便于监控和优化容器的性能。
5.3 UnionFS
UnionFS(联合文件系统)是Docker镜像的基础,它允许将多个文件系统叠加在一起,形成一个单一的文件系统。
- 层级结构:每个Docker镜像由多层文件系统构成,镜像的修改只会在最上层生效,其他层保持不变。
- 写时复制:当容器需要修改文件时,Docker会将文件复制到最上层文件系统,然后进行修改,这种方式提高了性能并节省了存储空间。
5 安装Docker
5.1 在Windows上安装Docker
使用Docker Desktop
-
下载Docker Desktop:
- 访问Docker官网下载Windows版Docker Desktop。
-
安装Docker Desktop:
- 双击下载的安装包,按照安装向导步骤完成安装。
- 启动Docker Desktop,等待Docker引擎启动完成。
-
验证安装:
- 打开命令行,执行
docker --version
命令,检查Docker版本信息。
- 打开命令行,执行
配置Docker Desktop
- 启用WSL 2:在Docker Desktop设置中,选择WSL 2作为默认的Linux内核。
- 设置资源限制:在Docker Desktop设置中,调整CPU、内存和磁盘的使用限制。
5.2 在macOS上安装Docker
使用Docker Desktop
-
下载Docker Desktop:
- 访问Docker官网下载macOS版Docker Desktop。
-
安装Docker Desktop:
- 打开下载的.dmg文件,将Docker拖到应用程序文件夹。
- 启动Docker应用程序,等待Docker
引擎启动。
- 验证安装:
- 打开终端,执行
docker --version
命令,确认Docker版本。
- 打开终端,执行
配置Docker Desktop
- 设置资源:在Docker Desktop设置中,调整CPU和内存的使用限制。
- 启用文件共享:在Docker Desktop设置中,配置文件共享路径。
5.3 在Linux上安装Docker
使用包管理器安装Docker
-
更新系统包管理器:
sudo apt-get update # Debian/Ubuntu sudo yum update # CentOS/RHEL
-
安装Docker:
-
Debian/Ubuntu:
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" sudo apt-get update sudo apt-get install docker-ce
-
CentOS/RHEL:
sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
上面是官方提供的地址,由于某些原因可能访问不上,可以使用阿里云提供的仓库地址:
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
-
-
启动Docker服务:
sudo systemctl start docker sudo systemctl enable docker
-
验证安装:
docker --version docker run hello-world
配置Docker用户权限
-
将当前用户添加到Docker组,以便不需要sudo运行Docker命令:
sudo usermod -aG docker $USER
配置Docker镜像加速器
你会发现,上面的** docker run hello-world**可能运行不成功,原因就是无法从Docker仓库下载到镜像,那就需要我们自己配置一个地址,目前比较靠谱的方案是使用阿里云的容器镜像服务,就会生成一个私有的镜像地址,并且阿里云后台也会生成配置镜像加速器的过程。如下图:
后面就可以愉快地使用Docker了。