Install Docker Engine on Linux( CentOS )
环境准备
[root@centos7 ~]# uname -r 5.11.12-300.el7.aarch64 // 系统内核需要 3.1.0 以上 [root@centos7 ~]# cat /etc/os-release // 系统版本,Centos7 以上 NAME="CentOS Linux" VERSION="7 (AltArch)" ID="centos" ID_LIKE="rhel fedora" VERSION_ID="7" PRETTY_NAME="CentOS Linux 7 (AltArch)" ANSI_COLOR="0;31" CPE_NAME="cpe:/o:centos:centos:7:server" HOME_URL="https://www.centos.org/" BUG_REPORT_URL="https://bugs.centos.org/" CENTOS_MANTISBT_PROJECT="CentOS-7" CENTOS_MANTISBT_PROJECT_VERSION="7" REDHAT_SUPPORT_PRODUCT="centos" REDHAT_SUPPORT_PRODUCT_VERSION="7"
安装 Docker Engine
0. 卸载旧的版本
# yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
1. 安装必要的系统工具
# yum install -y yum-utils device-mapper-persistent-data lvm22. 设置镜像地址
// 默认是国外的,可能比较慢 # yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo // 也可以使用阿里云镜像地址,不过,如果阿里云更新了,可能会报错 ... # yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo3. 更新 yum 软件包索引
# yum makecache fast4. 安装 docker( 默认:最新版本 ) // docker-ce 社区版(推荐) ee 企业版
# yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin5. 启动 docker
systemctl start docker6. 检测 docker 是否安装成功 // docker run 的运行流程和工作原理
docker version // docker --version 只查看版本 或 docker run hello-world // 运行 hello-world 进行测试
# 设置开机启动及 docker 生命周期管理
// 设置 docker 随开机启动 systemctl enable docker // 查看 docker 运行状态 systemctl status docker systemctl start docker // docker 启动命令 systemctl restart docker // docker 重新启动 systemctl stop docker // docker 关闭 // 了解:卸载 docker yum remove docker-ce docker-ce-cli containerd.io docker-compose-plugin // 卸载依赖 // 删除资源 rm -rf /var/lib/docker // docker 的默认工作路径 rm -rf /var/lib/containerd
阿里云镜像加速
在国内使用 Docker 默认的官方镜像源,下载速度较慢或超时,所以,通常需要指定国内的镜像仓库地址来提速。
- 获取:登录个人阿里云账号 - 控制台 - 镜像容器服务 - 镜像工具 - 镜像加速器
- 配置:可以通过修改 daemon 配置文件 /etc/docker/daemon.json 来使用加速器
# sudo mkdir -p /etc/docker // 创建目录 // 编译配置文件 # sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://0oox1u60.mirror.aliyuncs.com"] } EOF // 重新加载配置文件 # sudo systemctl daemon-reload // 重启 docker # sudo systemctl restart docker
常见 bug
// 添加一个普通用户 webpiece,并设置密码 [root@centos7 ~]# useradd webpiece [root@centos7 run]# passwd webpiece 更改用户 webpiece 的密码 。 新的 密码: 重新输入新的 密码: passwd:所有的身份验证令牌已经成功更新 // 切换为普通用户身份 [root@centos7 run]# su webpiece
因为是使用 root 身份,安装的 docker,所以,会导致一个问题:
在普通用户登录的情况下,使用 docker images 时,会出现以下错误
[webpiece@centos7 run]$ docker images Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/json": dial unix /var/run/docker.sock: connect: permission denied // 通过报错文件的展示,可以看出是权限不足 [webpiece@centos7 run]$ cd /var/run [webpiece@centos7 run]$ ll | grep docker.sock srw-rw----. 1 root docker 0 9月 22 21:11 docker.sock // 其属主为root,权限为rw,可读可写;其属组为docker,权限为rw,可读 可写 // 如果要当前用户可直接读取该文件,就需要为 docker.sock 添加一个其他用户可读写权限或添加1个用户组就可以了方法 1( 推荐 ):一劳永逸
// 如果还没有 docker group,就添加一个 [root@centos7 /]# sudo groupadd docker // 将用户添加到该 group 中,然后,退出并重新登录就生效了 [root@centos7 /]# sudo gpasswd -a ${USER} docker 正在将用户“webpiece”加入到“docker”组中 // 重启 docker 服务 [root@centos7 /]# systemctl restart docker // 切换当前会话到新 group 或者重启 X 会话 [root@centos7 /]# newgrp - docker // 最后一步是必须的,否则,因为 groups 命令获取到的是缓存的组信息,刚添加的组信息未能生效 // 切换到普通用户账号,进行测试 [root@centos7 ~]# su webpiece [webpiece@centos7 root]$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE
方法 2:每次启动 docker 或重启 docker 之后$cd /var/run $sudo chmod 666 docker.sock
方法 3:每条命令前面加上 sudo