RHEL8安装docker-ce
2026/8/6 17:34:42 网站建设 项目流程

rhel8安装docker-ce

  • Docker解决了什么问题
  • 安装DOcker
    • 关闭防火墙和SELinux
    • 配置宿主机网卡转发
      • 加载br_netfilter内核
      • 开启网卡转发功能
    • 卸载旧版本Docker-CE(如果有)
    • 添加docker-ce的软件仓库(aliyun)
      • docker官方软件仓库
    • 卸载podman冲突包---RHEL8及以上版本
    • 安装docker-ce
    • 开机自启动docker服务并现在启动
  • 编辑docker配置文件
    • docker配置可选参数
    • 配置国内镜像加速源
    • 配置docker存储目录
    • Docke配置科学网络
      • 通过daemon.json配置代理--推荐
      • Docker官方方案--不推荐
    • 重启docker服务
    • 查看新的存储目录和加速源
  • 其他配置参数
    • 改完要重启docker服务
    • 拉取测试镜像
  • 免root运行docker

Docker解决了什么问题

系统版本声明:RHEL8
Docker解决了:“程序在我这跑的好好的,在你那怎么就不能运行了呢!”
解决了环境一致性的问题.
容器就是将一套运行环境打包成一个镜像.实现开箱即用.
容器不是虚拟机,与宿主机共享一个内核.


安装DOcker

参考文档: https://help.aliyun.com/document_detail/264695.html#section-m0l-g22-ska


关闭防火墙和SELinux

# 关闭防火墙和SELinuxsystemctl disable--nowfirewalld## 清空现有的所有iptables策略iptables-F# 禁用邮件服务systemctl disable--nowpostfix# 禁用selinuxsed-ri's#(SELINUX=).*#\1disabled#'/etc/selinux/config# 立即禁用临时SElinuxsetenforce0

配置宿主机网卡转发

参考: https://feisky.gitbooks.io/sdn/content/linux/params.html


加载br_netfilter内核

br_netfilter内核模块,用于在网络桥接设备启用网络过滤功能

# 加载br_netfilter内核modprobe br_netfilter# 开机自动加载netfilter网桥过滤模块cat<<EOF|sudotee/etc/modules-load.d/netfilter.confbr_netfilter EOF# 查看模块是否加载lsmod br_netfilter

ls/proc/sys/net/bridge bridge-nf-call-arptables bridge-nf-filter-pppoe-tagged bridge-nf-call-ip6tables bridge-nf-filter-vlan-tagged bridge-nf-call-iptables bridge-nf-pass-vlan-input-dev


开启网卡转发功能

vim/etc/sysctl.d/k8s.conf# 开启ipv4转发功能net.ipv4.ip_forward=1# 启用 Linux 内核对所有网络接口的 Proxy ARP 功能net.ipv4.conf.all.proxy_arp=1# 在ip6tables链中过滤IPv6包net.bridge.bridge-nf-call-ip6tables=1# 在iptables链中过滤IPv4包net.bridge.bridge-nf-call-iptables=1# netfilter防火墙内核模块最大跟踪连接数net.netfilter.nf_conntrack_max=2310720# 禁用用swapvm.swappiness=0# 关闭IPV6net.ipv6.conf.all.disable_ipv6=1net.ipv6.conf.default.disable_ipv6=1net.ipv6.conf.lo.disable_ipv6=1

生效sysctl配置

# 使内核配置生效sysctl-p

卸载旧版本Docker-CE(如果有)

https://docs.docker.com/engine/install/centos/

# 卸载旧版本Docker-CEsudodnf-yremovedocker\docker-client\docker-client-latest\docker-common\docker-latest\docker-latest-logrotate\docker-logrotate\docker-engine\podman\runc# 新版本卸载dnf-yautoremove docker-ce docker-scan-plugin docker-compose-plugin docker-ce-cli docker-buildx-plugin# 查看卸载完没有rpm-qa|grepdocker

添加docker-ce的软件仓库(aliyun)

# 安装dnf-utilsdnfinstall-ydnf-utils# docker官方源dnf-config-manager\--add-repo\https://download.docker.com/linux/centos/docker-ce.repo# 添加docker-ce的软件仓库(国内源)dnf config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 查看repolist中docker-ce仓库是否添加成功dnf repolist

docker官方软件仓库

官方文档:https://docs.docker.com/engine/install/rhel/

# 安装dnf-plugins-corednf-yinstalldnf-plugins-core# 添加docker安装源dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo

卸载podman冲突包—RHEL8及以上版本

# 卸载podman冲突包dnf erasepodmanbuildah-y#方法2: 安装时使用--allowerasing参数自动替换冲突包dnf-yinstalldocker-ce--allowerasing

安装docker-ce

# 安装docker-cednfinstall-ydocker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

开机自启动docker服务并现在启动

# 开机自启动并现在启动docker服务systemctlenable--nowdocker# 查看docker版本docker--version

编辑docker配置文件

# 编辑docker配置文件vim/etc/docker/daemon.json

docker配置可选参数

docker配置文件/etc/docker/daemon.json

参考: https://v1-22.docs.kubernetes.io/zh/docs/setup/production-environment/container-runtimes

参数解释参考
“experimental”: true开启docker实验功能
“features”: {“buildkit”: true}启用BuildKit
“exec-opts”: [“native.cgroupdriver=systemd”]docker默认使用Cgroup Driver为cgroupfs,K8S推荐使用systemd来代替cgroupfs
“data-root”: “/data/docker”将docker的默认存储路径由/var/lib/docker设为/data/docker
“storage-driver”: “overlay2”,配置docker存储驱动,但需要Linux内核4.0以上
“storage-opts”: [“overlay2.override_kernel_check=true”]当主机内核版本较低(如低于 4.0),强制启用 Overlay2 存储驱动‌,并跳过对内核版本的兼容性检查
“registry-mirrors”: [“https://isdp30x2.mirror.aliyuncs.com”]配置国内docker源

配置国内镜像加速源

docker的默认镜像源在美国,国内下载会很慢,可以修改为国内的镜像源地址.

配置内容如下:
/etc/docker/daemon.json

{"registry-mirrors":["https://isdp30x2.mirror.aliyuncs.com"]}

配置docker存储目录

有些服务器分区的var目录不是独立的分区.而是和/分区共用的.而docker默认的存储路径是在/var/lib/docker,这就很容易导致将/分区磁盘空间占满.

  • 查看docker的默认存储目录
# 获取有关Docker守护程序(Docker Daemon)的详细信息dockerinfo# 默认目录是:## Docker Root Dir: /var/lib/docker
  • 修改docker主配置文件

json格式注意格式

# 创建/etc/docker目录(如果没有)mkdir-p/etc/docker# 写入配置信息vim/etc/docker/daemon.json

配置如下:

{"data-root":"/data/docker","registry-mirrors":["https://isdp30x2.mirror.aliyuncs.com"]}

Docke配置科学网络

参考:https://www.cnblogs.com/Chary/p/18096678


通过daemon.json配置代理–推荐

/etc/docker/daemon.json中增加代理配置:

{"proxies":{"http-proxy":"http://<user>:<password>@<domain>:<port>","https-proxy":"http://<user>:<password>@<domain>:<port>","no-proxy":"<registry.domain>"}}

检查配置是否生效:

# 检查配置是否生效dockerinfo|grepProxy

Docker官方方案–不推荐

systemd也会从/etc/systemd/system/docker.service.d/lib/systemd/system/docker.service.d文件夹下读取配置,创建docker.service.d目录。
sudo mkdir -p /etc/systemd/system/docker.service.d

编辑文件:
vim /etc/systemd/system/docker.service.d/http-proxy.conf

[Service]Environment="HTTP_PROXY=http://proxy.example.com:80"Environment="HTTPS_PROXY=https://proxy.example.com:443"# 绕过科学网络 直连Environment="NO_PROXY=your-registry.com,10.10.10.10,*.example.com"

重启docker服务

# 重载服务(如果出错就执行)systemctl daemon-reload# 重启docker服务systemctl restartdocker

查看新的存储目录和加速源

dockerinfo# 默认目录是:## Docker Root Dir: /data/docker

其他配置参数

# 创建/etc/docker目录sudomkdir-p/etc/docker# 添加配置## 官方建议使用overlay2sudotee/etc/docker/daemon.json<<-'EOF' { "experimental": true, "registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"], "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2" } EOF

改完要重启docker服务

# 重载服务(如果出错就执行)sudosystemctl daemon-reload# 重启docker服务sudosystemctl restartdocker

拉取测试镜像

[rhel8 root ~]# docker pull hello-worldUsing default tag: latest latest: Pulling from library/hello-world 2db29710123e: Pull complete Digest: sha256:37a0b92b08d4919615c3ee023f7ddb068d12b8387475d64c622ac30f45c29c51 Status: Downloaded newer imageforhello-world:latest docker.io/library/hello-world:latest

免root运行docker

# 将当前(普通)用户添加到docker组sudousermod-aGdocker$USER## 或# 将当前(普通)用户添加到docker组sudogpasswd-a$USERdocker# 测试普通用户是否可以执行docker## 登入dockre组newgrpdocker## 执行docker命令启动一个容器dockerrun hello-world## 删除容器dockerrun--rmhello-world

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询