Fedora 31安装docker
- 如果之前安装了docker,需要先卸载。卸载命令如下
sudo dnf remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine
- 使用dnf安装,执行以下命令安装依赖包
sudo dnf -y install dnf-plugins-core
- 执行下面的命令添加 dnf 软件源,使用的是国内的镜像,官方源在注释中:
sudo dnf config-manager \ --add-repo \ https://mirrors.ustc.edu.cn/docker-ce/linux/fedora/docker-ce.repo # 官方源 # sudo dnf config-manager \ # --add-repo \ # https://download.docker.com/linux/fedora/docker-ce.repo
- 更新 dnf 软件缓存并安装docker ce
sudo dnf update #更新dnf软件缓存
sudo dnf install docker-ce #安装docker ce
-
启动docker ce
sudo systemctl enable docker #设置docker开机自启 sudo systemctl start docker #启动docker
-
建立 docker 用户组
默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。建立 docker 组:
sudo groupadd docker
将当前用户加入 docker 组:sudo usermod -aG docker $USER
-
配置镜像加速器
国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。国内很多云服务商都提供了国内加速器服务,例如:Azure 中国镜像 https://dockerhub.azk8s.cn 阿里云加速器(需登录账号获取) 网易云加速器 https://hub-mirror.c.163.com
由于镜像服务可能出现宕机,建议同时配置多个镜像。各个镜像站测试结果请到 docker-practice/docker-registry-cn-mirror-test 查看。
国内各大云服务商均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务,具体请参考官方文档。
对于使用 systemd 的系统,请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)
{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://hub-mirror.c.163.com"
]
}
注意,一定要保证该文件符合 json 规范,否则 Docker 将不能启动。
8. 验证docker是否安装成功,输入如下命令docker run hello-world
如果出现这种效果,代表docker安装成功
9. 如果出现
docker: Error response from daemon:
OCI runtime create failed: container_linux.go:346: starting container process caused "process_linux.go:297:
applying cgroup configuration for process caused \"open /sys/fs/cgroup/docker/cpuset.cpus.effective: no such file or directory\"": unknown.
这种错误,这个错误的原因是由于Fedora 31所引起的。
解决办法:
vim /etc/default/grub
在 “ GRUB_CMDLINE_LINUX= ”里面新增内容 systemd.unified_cgroup_hierarchy=0
保存退出后,输入 grub2-mkconfig
,再重启,即可解决问题。这只是一种解决手段
或者根据官方提供的解决手段,原文地址
以下是官方关于这个问题的原话:
The Docker package has been removed from Fedora 31. It has been replaced by the upstream package moby-engine, which includes the Docker CLI as well as the Docker Engine. However, we recommend instead that you use Package-x-generic-16.pngpodman, which is a Cgroups v2-compatible container engine whose CLI is compatible with Docker’s. Fedora 31 uses Cgroups v2 by default. The moby-engine package does not support Cgroups v2 yet, so if you need to run the moby-engine or run the Docker CE package, then you need to switch the system to using Cgroups v1, by passing the kernel parameter systemd.unified_cgroup_hierarchy=0. To do this permanently, run:
机翻
Docker软件包已从Fedora 31中删除。它已由上游软件包moby-engine取代,该软件包包括Docker CLI和Docker Engine。但是,我们建议您改为使用,这是Cgroups v2兼容的容器引擎,其CLI与Docker的CLI兼容。Fedora 31默认使用Cgroups v2。moby-engine软件包尚不支持Cgroups v2,因此,如果需要运行moby-engine或运行Docker CE软件包,则需要通过传递内核参数systemd.unified_cgroup_hierarchy =将系统切换为使用Cgroups v1。0。要永久执行此操作,请运行:
sudo grubby --update-kernel = ALL --args =“ systemd.unified_cgroup_hierarchy = 0”