Docker 原理
容器的组成
容器=cgroup+namespace+rootfs+容器引擎。
其中各项分别为:
- Cgroup 资源控制
- Namespace 访问隔离
- rootfs 文件隔离
- 容器引擎 生命周期控制
Cgroup (Control Group)
Cgroup是control group的简写,属于Linux内核提供的一个特性,用于限制和隔离一组进程对系统资源的使用,也就是做资源QoS,这些资源主要包括CPU、内存、block I/O和网络带宽等。
Centos 安装docker
1. 卸载旧版本
[parallels@localhost ~]$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
[sudo] parallels 的密码:
未找到匹配的参数: docker
未找到匹配的参数: docker-client
未找到匹配的参数: docker-client-latest
未找到匹配的参数: docker-common
未找到匹配的参数: docker-latest
未找到匹配的参数: docker-latest-logrotate
未找到匹配的参数: docker-logrotate
未找到匹配的参数: docker-selinux
未找到匹配的参数: docker-engine-selinux
未找到匹配的参数: docker-engine
没有软件包需要移除。
依赖关系解决。
无需任何处理。
完毕!
主机上的映像、容器、卷或自定义配置文件不会自动删除。要删除所有映像、容器和卷:
$ sudo rm -rf /var/lib/docker
$ sudo rm -rf /var/lib/containerd
2. 使用yum安装
1. 安装依赖包
[parallels@localhost ~]$ sudo yum install -y yum-utils
上次元数据过期检查:1:09:03 前,执行于 2021年09月26日 星期日 15时05分25秒。
依赖关系解决。
====================================================================================================================================================================================================
软件包 架构 版本 仓库 大小
====================================================================================================================================================================================================
安装:
yum-utils noarch 4.0.18-4.el8 baseos 71 k
事务概要
====================================================================================================================================================================================================
安装 1 软件包
总下载:71 k
安装大小:22 k
下载软件包:
yum-utils-4.0.18-4.el8.noarch.rpm
2. 切换yum源
由于国外yum源慢,所以切换到阿里仓库。
[parallels@localhost ~]$ sudo yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
添加仓库自:https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[parallels@localhost ~]$ sudo sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
4. 安装docker
[parallels@localhost yum.repos.d]$ sudo yum install -y docker-ce docker-ce-cli containerd.io
Docker CE Stable - x86_64 89 kB/s | 15 kB 00:00
Docker CE Test - x86_64 104 kB/s | 18 kB 00:00
依赖关系解决。
要安装特定版本的 Docker Engine-Community,请在存储库中列出可用版本,然后选择并安装:
- 列出并排序您存储库中可用的版本。此示例按版本号(从高到低)对结果进行排序。
[root@kubernetes-node-3 ~]# yum list docker-ce --showduplicates | sort -r
* updates: mirrors.aliyun.com
Loading mirror speeds from cached hostfile
Loaded plugins: fastestmirror, langpacks
* extras: mirrors.aliyun.com
docker-ce.x86_64 3:20.10.9-3.el7 docker-ce-stable
docker-ce.x86_64 3:20.10.8-3.el7 docker-ce-stable
...
- 通过其完整的软件包名称安装特定版本,该软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)一直到第一个连字符,并用连字符(-)分隔。例如:docker-ce-18.09.1。
sudo yum install -y docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
3. 使用脚本安装
在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,CentOS 系统上可以使用这套脚本安装,另外可以通过 --mirror
选项使用国内源进行安装:
# $ curl -fsSL test.docker.com -o get-docker.sh
$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh --mirror Aliyun
# $ sudo sh get-docker.sh --mirror AzureChinaCloud
执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 Docker 的稳定(stable)版本安装在系统中。
4. 启动docker
设置开机启动:
[root@localhost yum.repos.d]# systemctl enable docker.service
启动docker:
[root@localhost yum.repos.d]# systemctl start docker
5. 创建docker组
默认情况下,docker
命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root
用户和 docker
组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root
用户。因此,更好地做法是将需要使用 docker
的用户加入 docker
用户组。
建立 docker
组:
增加docker用户:
useradd -m docker -p docker -g docker
修改密码:
6. 修改docker数据目录
停止docker服务
systemctl stop docker.service
查看容量大的挂载目录
[root@localhost docker]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 32G 0 32G 0% /dev
tmpfs 32G 0 32G 0% /dev/shm
tmpfs 32G 3.2G 29G 11% /run
tmpfs 32G 0 32G 0% /sys/fs/cgroup
/dev/mapper/centos-root 50G 49G 1.1G 98% /
/dev/sda1 1014M 184M 831M 19% /boot
/dev/mapper/centos-home 58G 4.1G 54G 8% /home
/dev/mapper/centos-data 900G 42G 858G 5% /data
vim /etc/docker/daemon.json
启动docker服务
systemctl start docker.service
验证是否修改成功
[root@localhost docker]# docker info
Client:
Context: default
Debug Mode: false
...
Docker Root Dir: /data
...