K8S学习之CentOS7系统搭建Docker环境

前言

  • 内容介绍

    本次安装事先基于win10环境安装VMWare 12虚拟机,并创建完成CentOS7镜像,在以上基础上安装Docker,由于重点在安装Docker,搭建Linux环境的步骤就直接跳过,可以参照下面的参考链接进行环境搭建。

  • 环境信息

    
        # CentOS7版本
        uname -a ## Linux nbsp 3.10.0-123.el7.x86_64 #1 SMP Mon Jun 30 12:09:22 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
    
        # 最终安装docker版本
        docker -v  ## Docker version 20.10.10, build b485636
    
    
    
    

CentOS7虚拟机安装联网

  • 操作命令

    
    
        # 1. 进入/etc/sysconfig/network-scripts目录,查看该目录有没有形如ifcfg-XXX的文件
        cd /etc/sysconfig/network-scripts  ## 如果找不到类似文件,很有可能是下载的centos镜像版本和安装centos时选择的centos版本不一致,比如:centos镜像是64位的,却按照32位来安装。
    
    
        # 2. 在VMware里,依次点击"编辑" - "虚拟网络编辑器" ,设置为桥接模式,采用的是无线网,点击更改时会弹出WMnet0,将其设置为桥接模式
        
    
    
        # 3. 修改ifcfg-XXX文件(可不做,每次重启后查看当前ip即可)
    
    
        # 4. 重启网卡服务
        service network restart
    
    
    
  • 连接工具

    日常命令推荐:MobaXterm

    文件上传推荐:fileZilla

Docker环境部署

添加普通用户执行权限

  • 操作命令

    
        # 查看当前主机是否有docker组
        cat /etc/group | grep docker
    
        # 创建docker组
        sudo groupadd docker
    
        # 为新增的用户添加sudo权限  wq!强制写入
        sudo vi /etc/sudoers
    
        ##在92行下一行添加
        用户名   ALL=(ALL)   ALL
    
        # 把当前用户加入到docker组
        sudo gpasswd -a 用户名 docker  ## 或者 sudo usermod -aG docker 用户名
    
        # 查看当前用户组
        groups
        
    
    

安装Docker

  • 安装 Docker 依赖包

    
    
        # 首先安装 Docker 必要依赖包 
        sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    
    

    docker安装基础依赖

  • 安装Docker

    
        # 自带 yum 没有 Docker-CE 所以我们需要先增加 docker repo(设置国内 yum 源)
        sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
    
        # 用 yum 安装 Docker 
        sudo yum install -y docker-ce ## -y(当安装过程提示选择全部为 "yes")
    
        # 查看版本
        docker -v
    
    

    docker安装成功提示

启动Docker

  • 常用启动命令

    
    
        # 启动 Docker 后台服务
        sudo systemctl start docker
    
        ## Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
    
        # 加入开机启动
        sudo systemctl enable docker ## 或者 chkconfig docker on
    
    
    
    
  • 启动报错信息

    
    
        [nbsp@nbsp docker]$ systemctl status docker.service
    
        ● docker.service - Docker Application Container Engine
        Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
        Active: failed (Result: start-limit) since Sat 2021-11-13 22:30:46 CST; 7s ago
            Docs: https://docs.docker.com
        Process: 4850 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (code=exited, status=1/FAILURE)
        Main PID: 4850 (code=exited, status=1/FAILURE)
    
    
    

centos7安装docker首次启动报错

  • 启动报错解决流程

    1. 修改docker.service文件参数配置
    
    
        vi /usr/lib/systemd/system/docker.service
    
        ## 修改内容中参数
        ExecStart=/usr/bin/dockerd
    
        
    
    1. 修改系统SELINUX
    
        # 将SELINUX=enforcing改为SELINUX=disabled,保存后退出
        vim /etc/selinux/config
    
    
    
    
    
    1. 新增并修改docker文件
    
        # docker成功但系统并未存在docker文件
        vim /etc/sysconfig/docker
    
        ## 加入  
        OPTIONS="--selinux-enabled=false --log-driver=journald --signature-verification=false"
    
    1. 新增并修改daemon.json文件
    
        vim /etc/docker/daemon.json
    
    
    
    

    新增以下内容

    
    
        {
            "registry-mirrors": ["https://0w6b0t5c.mirror.aliyuncs.com"],   # 是用来pull容器加速用的,跟此次问题无关。
            "storage-driver": "devicemapper"    # 解决此次问题
        }
    
    
    1. 关闭防火墙
    
        # 关闭防火墙
        systemctl stop firewalld.service
    
    
        # 其他备用命令
        # 查看防火墙状态
        firewall-cmd --state  ## inactive未开启的
        # 临时关闭
        systemctl stop firewalld
        # 开机禁止启动防火墙
        systemctl disable firewalld
        # 临时打开
        systemctl start firewalld
        # 开机启动防火墙
        systemctl enable firewalld
    
    

    其他尝试命令

    
        
        # 使用dockerd命令排查原因
        dockerd
    
        # 安装相关组件
        yum install xfsprogs
    
        # 升级
        yum update
    
    
    
    
    
  • 总结

    最终将防火墙关闭的后,执行启动容器命令,成功将容器启动,但最终不清楚是所有命令加起来将问题处理了,还是仅仅由于防火墙!!!

Docker配置

  • 配置国内镜像

    针对Docker客户端版本大于1.10.0

    
        
    
        # 创建文件夹
        sudo mkdir -p /etc/docker
    
        # 编辑/etc/docker/daemon.json文件,并输入国内镜像源地址
        ## 方式一: tee给daemon.json文件加入
        sudo tee /etc/docker/daemon.json <<-'EOF' 
        {
            "registry-mirrors": ["https://登录阿里云获取.mirror.aliyuncs.com"]
        } 
        EOF
    
        ## 方式二:用vi命令手动分步骤实现
        sudo vi /etc/docker/daemon.json
        ## 中国官网镜像加速
        {
            "registry-mirrors": ["https://registry.docker-cn.com"]
        }
    
    
        # 重新加载配置文件
        sudo systemctl daemon-reload
    
        # 重启docker服务
        sudo systemctl restart docker
    
    
    

    针对Docker客户端版本较低

    
        echo "OPTIONS='--registry-mirror=https://mirror.ccs.tencentyun.com'" >> /etc/sysconfig/docker
    
        systemctl daemon-reload
    
        service docker restart
    
    
    
    
  • 检查加速器是否生效

    
        docker info
    
        # 如下内容,说明配置成功
        Registry Mirrors:
            https://reg-mirror.qiniu.com
    
    
    

Docker常用命令

  • 镜像相关指令

    
        # 查看已有镜像
        docker images
    
        # 在docker官网搜寻指定镜像
        docker search 镜像
    
        # 下载镜像(不加标签默认下载最新版本的镜像)
        docker pull 镜像名字:tag(即标签)
    
        # 保存已有镜像
        docker save -o name.tar 镜像name:tag
    
        # 加载镜像
        docker load -i name.tar
    
        # 镜像的删除(删除镜像前请删除所有与该镜像有关的容器)
        docker rmi 镜像ID(或name:tag)
    
        # 修改镜像name和tag
        docker tag 镜像name 新镜像name:新tag 
    
    
    
    
  • 容器相关指令

    
    
    
        # 启动容器(-d:后台运行;--name:指定容器名字;-p:映射容器端口到本机端口;-v:容器目录文件挂载至本机目录)
        docker run -d --name 自定义容器name -p 本机端口:容器端口 -v 本机目录:容器目录 镜像ID(或name:tag)
    
        # 进入正在运行的容器内部(-i:以交互模式运行容器;-t:为容器重新分配一个伪输入终端.通常it一起使用)
        docker exec -it 容器name(或ID) /bin/bash
    
        # 容器的启/停/重启/删除
        docker start/stop/restart/rm 容器name(或ID)
    
        # 查看容器端口映射
        docker port 容器name(或ID)
    
        # 查看容器信息
        docker inspect 容器name(或ID)
    
        # 查看正在运行的容器
        docker ps
    
        # 查看所有容器(包括正在运行的、停止的,不包括删除的)
        docker ps -a
    
        # 查看容器内的进程
        docker top 容器name(或ID)
    
        # 监控并显示最新100行的容器日志(可以直接使用docker logs容器name(或ID),但是日志容量大的最好加上条件)
        docker logs -f --tail=100 容器name(或ID)
    
        
    
  • 其他指令

    
        # docker启/停/重启/查看状态
        sudo systemctl start/stop/restart/status
    
        # 查看当前安装的docker有关信息
        docker info
    
    
    
    

参考链接

  • CentOS 7安装教程(图文详解)

    https://blog.csdn.net/qq_44714603/article/details/88829423

  • VMware安装Centos7详细教程

    https://www.cnblogs.com/jiangcong/p/14422322.html

  • 使用VMware安装CentOS7系统后,无法联网

    https://blog.csdn.net/chinabate/article/details/84900286

  • 解决CentOS7虚拟机无法上网并设置CentOS7虚拟机使用静态IP上网

    https://blog.csdn.net/a785975139/article/details/53023590

  • VMware 搭建centos7虚拟机后,网络配置以及出现Restarting network (via systemctl):错误的解决方案

    https://blog.csdn.net/qq_32931493/article/details/80557618

  • 连接linux的一些工具

    https://blog.csdn.net/u014803081/article/details/87989013

  • CentOS Docker 安装

    https://www.runoob.com/docker/centos-docker-install.html

  • Centos 7 搭建Docker环境

    https://blog.csdn.net/u012486840/article/details/97930646

  • Docker启动时的报错汇总

    https://www.jianshu.com/p/93518610eea1

  • centos7下修改docker工作目录

    https://www.cnblogs.com/ding2016/p/10884128.html


版权声明:本文为weixin_42586723原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。