尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

RHEL8安装docker-ce

RHEL8安装docker-ce rhel8安装docker-ceDocker解决了什么问题安装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运行dockerDocker解决了什么问题系统版本声明:RHEL8Docker解决了“程序在我这跑的好好的,在你那怎么就不能运行了呢!”解决了环境一致性的问题.容器就是将一套运行环境打包成一个镜像.实现开箱即用.容器不是虚拟机,与宿主机共享一个内核.安装DOcker参考文档: https://help.aliyun.com/document_detail/264695.html#section-m0l-g22-ska关闭防火墙和SELinux# 关闭防火墙和SELinuxsystemctl disable--nowfirewalld## 清空现有的所有iptables策略iptables-F# 禁用邮件服务systemctl disable--nowpostfix# 禁用selinuxsed-ris#(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网桥过滤模块catEOF|sudotee/etc/modules-load.d/netfilter.confbr_netfilter EOF# 查看模块是否加载lsmod br_netfilterls/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_forward1# 启用 Linux 内核对所有网络接口的 Proxy ARP 功能net.ipv4.conf.all.proxy_arp1# 在ip6tables链中过滤IPv6包net.bridge.bridge-nf-call-ip6tables1# 在iptables链中过滤IPv4包net.bridge.bridge-nf-call-iptables1# netfilter防火墙内核模块最大跟踪连接数net.netfilter.nf_conntrack_max2310720# 禁用用swapvm.swappiness0# 关闭IPV6net.ipv6.conf.all.disable_ipv61net.ipv6.conf.default.disable_ipv61net.ipv6.conf.lo.disable_ipv61生效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-repohttps://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 查看repolist中docker-ce仓库是否添加成功dnf repolistdocker官方软件仓库官方文档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.jsondocker配置可选参数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.cgroupdriversystemd”]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_checktrue”]当主机内核版本较低如低于 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:passworddomain:port,https-proxy:http://user:passworddomain:port,no-proxy:registry.domain}}检查配置是否生效# 检查配置是否生效dockerinfo|grepProxyDocker官方方案–不推荐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]EnvironmentHTTP_PROXYhttp://proxy.example.com:80EnvironmentHTTPS_PROXYhttps://proxy.example.com:443# 绕过科学网络 直连EnvironmentNO_PROXYyour-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.cgroupdriversystemd], 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
返回列表