Docker的在线安装,解决按如下步骤解决docker安装出现的各种问题

目录

一、初始化环境(基础组件)

二、安装docker(安装docker-ce)

 三、内核参数的调优(开启网桥功能)


一、初始化环境(基础组件)

# 修改主机名(&&bash为更新环境变量)
[root@localhost ~]# hostnamectl set-hostname dockerdemon && bash

# 关闭防火墙
[root@dockerdemon ~]# systemctl stop firewalld && systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

# 关闭selinux
[root@dockerdemon ~]# setenforce 0

# 永久关机selinux
[root@dockerdemon ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

# 重启机器后生效
[root@dockerdemon ~]# reboot

# 显示Disabled为配置生效
[root@dockerdemon ~]# getenforce
Disabled

# 安装时间同步软件
[root@dockerdemon ~]# yum install -y ntp ntpdate

# 同步时间
[root@dockerdemon ~]# ntpdate cn.pool.ntp.org 
14 Jun 04:55:21 ntpdate[1507]: adjust time server 202.112.31.197 offset -0.002116 sec

# 使用crond计划任务同步时间
[root@dockerdemon ~]# crontab -e

# 将以下写入crond里面
[root@dockerdemon ~]# crontab  -u root -l
* */1 * * * /usr/sbin/ntpdate   cn.pool.ntp.org

# 安装基础软件包依赖(这里我把我经常使用的都安了)
[root@dockerdemon ~]# yum install -y  wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel  python-devel epel-release openssh-server socat  ipvsadm conntrack  yum-utils



二、安装docker(安装docker-ce)

# 安装国内docker镜像源(此处用的阿里,yum-config-manager是在yum-utils里面的)
[root@dockerdemon ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Loaded plugins: fastestmirror
adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
grabbing file http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo

# 首先安装docker依赖包
[root@dockerdemon ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

# 安装docker-ce默认是最新版本
[root@dockerdemon ~]# yum install docker-ce -y

# 查看docker版本
[root@dockerdemon ~]# docker version
Client: Docker Engine - Community
 Version:           24.0.2
 API version:       1.43
 Go version:        go1.20.4
 Git commit:        cb74dfc
 Built:             Thu May 25 21:55:21 2023
 OS/Arch:           linux/amd64
 Context:           default
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?


# 启动并设置自启动docker
[root@dockerdemon ~]# systemctl start docker && systemctl enable docker

# 查看docker状态
[root@dockerdemon ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2023-06-14 05:09:30 EDT; 10s ago
     Docs: https://docs.docker.com
 Main PID: 2261 (dockerd)
   CGroup: /system.slice/docker.service
           └─2261 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

安装成功如图

 三、内核参数的调优(开启网桥功能)

# 开启br_netfilter功能,用于将桥接的流量转发至iptables链
[root@dockerdemon ~]# modprobe br_netfilter

# 将br_netfilter功能开机自启,否则开机后不会自动加载
[root@dockerdemon ~]# cat /etc/rc.sysinit
#!/bin/bash
for file in /etc/sysconfig/modules/*.modules ; do 
[ -x $file ] && $file
done

# 编辑br_netfilter.modules写入执行命令
[root@dockerdemon ~]# cat /etc/sysconfig/modules/br_netfilter.modules
modprobe br_netfilter

# 给文件赋予权限
[root@dockerdemon ~]# chmod 755 /etc/sysconfig/modules/br_netfilter.modules


# 检查br_netfilter是否开启(这一步相当重要,如果没有加载成功sysctl -p /etc/sysctl.d/docker.conf 会报错!!!!!!!!)
[root@dockerdemon ~]# lsmod | grep br_netfilter
br_netfilter           22256  0 
bridge                151336  1 br_netfilter

----------------------解释-------------------------
/etc/rc.sysinit
# rc.sysinit 是 Linux 系统中在引导过程中执行的一个脚本文件。该脚本文件通常位于 /etc/rc.d/ 目录下,用于启动一些关键的系统服务和初始化操作,例如挂载文件系统、加载内核模块、检测硬件设备等等。

for file in /etc/sysconfig/modules/*.modules ; do 
# 表示遍历/etc/sysconfig/modules/*.modules

[ -x $file ] && $file 接收遍历出来的值,将其执行(这一步俗称万精油,任何需要开启自启的程序,都可以采用这个步骤)

modprobe br_netfilter
Docker 中,br_netfilter 模块是用于支持 Linux 内核网络桥接(bridge)功能。而 modprobe 是一个用于管理 Linux 内核模块的工具,用于在运行时加载和卸载内核模块。
在一些 Linux 发行版中,br_netfilter 模块默认是被禁用的,因此 Docker 在安装过程中需要修改 modprobe 配置,使其能够自动加载该模块以支持 Docker 网络桥接功能的正常使用。
---------------------------------------------------

# 将以下参数填入docker.conf
[root@dockerdemon ~]# cat /etc/sysctl.d/docker.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

# 重新加载内核参数,使其生效
[root@dockerdemon ~]# sysctl -p /etc/sysctl.d/docker.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

----------------------解释-------------------------
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
# 这两个不开启,docker安装后会一直报错WARNING: bridge-nf-call-iptables is disabled 

net.ipv4.ip_forward = 1
不开启会导致docker部署应用无法在其他主机上访问,用docker一般都是桥接使用所以有备无患,打开它(将Linux系统作为路由或者VPN服务就必须要开启IP转发功能。当linux主机有多个网卡时一个网卡收到的信息是否能够传递给其他的网卡 ,如果设置成1 的话 可以进行数据包转发,可以实现VxLAN 等功能)
---------------------------------------------------

# 做完以上操作后,重启docker完成安装
[root@dockerdemon ~]# systemctl restart docker &&  systemctl status docker

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青凯平

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值