• 自建脚本安装docker


    注:

    因为用的都是编译安装后的脚本,因此该方法需要在一台 服务器上 先安装好docker ,之后的服务器 只需将编译后的 脚本 拷贝过去即可。

    我安装的docker 版本是  

    [root@localhost mybuilddocker]# docker -v
    Docker version 20.10.16, build aa7e414

    1、docker 的版本不同 可能需要的依赖不同  ,这个依赖可以在  已安装 docker 的主机 查看  /usr/lib/systemd/system/docker.service ,

       下面是我在一台虚拟机上安装docker,看到的 需要的依赖组件  

        

    2、将需要的文件 拷贝到需要安装的其他主机上。

        

         其中被红色圈出来的文件 在     /usr/lib/systemd/system/ 这个目录下  , 其他的 在 /usr/bin 目录下。

    3、将上面的文件 从已安装 docker的主机上,拷贝到需要安装的主机上的指定目录。

         执行 systemctl daemon-reload  重载 服务的配置文件,之后启动 docker 服务即可(systemctl start docker)。

    错误处理:

     a) 若是在启动的过程中遇到如下报错 ,且start 命令 遇到了docker.service: Unit not found

         

         这种情况多数是 因为docker.service 文件中的某些依赖没有导入过来,按照 1 说的 都检查一下,有没有的 从 已安装docker的主机拷贝过来。

        http://www.zzvips.com/article/134193.html  这里有详解。

     b) 启动还是失败 同时提示  通过 journalctl -xe  这个命令获取详细信息。同时可以看到 docker.socker 启动失败。

       

         解决办法:

         方法1.添加docker用户组(groupadd docker,如果/etc/group用统一配置管理的话记得在源group文件中添加docker组信息)

         方法2. 修改/usr/lib/systemd/system/docker.socket文件:  之后别忘了  systemctl daemon-reload  重载 服务的配置文件

        [Unit]
        Description=Docker Socket for the API
        PartOf=docker.service

        [Socket]
        ListenStream=/var/run/docker.sock
        SocketMode=0660
        SocketUser=root
        SocketGroup=docker    这里改成:SocketGroup=root 或其他存在的组

        [Install]
        WantedBy=sockets.target

              https://blog.csdn.net/zdx1515888659/article/details/100103373  这里有详解

       c) doker 还是启动失败  同时看到  code=exited, status=1/FAILURE   的错误,这个错误 是  linux 的selinux 导致的 

          解决办法 1、 关闭  selinux 

          解决办法   2、

                                不过我的/etc/sysconfig/ 下没有 docker这个文件 我就 使用 办法1 解决了。

     附上  安装脚本如下

          其中   docker-20.10.16.tgz 是自己将  2 中在 /usr/bin 下需要的文件打的包 目录名是 docker , 其他的 这个目录下需要的文件 /usr/lib/systemd/system/,和 docker-20.10.16.tgz

                               这个文件放在同一级目录,可以看到脚本还有 docker.socker 文件以及其他没有拷贝的文件,可以自己 先添加到脚本里

          

    cd $(dirname $0)
    currentscript="$0"
    currentdir="`pwd`"
    docker --version
    if [ $? = 0 ];then
       echo "docker 已安装,本次安装忽略....."
    else
       tar -zxvf docker-20.10.16.tgz && cp docker/* /usr/bin/ && mkdir -p /etc/docker && cp daemon.json /etc/docker/ && cp docker.service /usr/lib/systemd/system/
    fi
    
    deadCount=$(systemctl status docker | grep Active | grep dead |wc -l)
    
    #启动
    if [ $deadCount -gt 0 ];then
        echo "启动 docker"
        systemctl daemon-reload && systemctl start docker && systemctl status docker.service && chkconfig docker on
        newdeadCount=$(systemctl status docker | grep Active | grep running |wc -l)
        if [ $newdeadCount -gt 0 ];then
            echo "docker 安装成功,已启动"
        else
            echo "docker 安装失败,启动失败"
        fi
    else
       echo "docker 服务已启动过,本次安装忽略....."
    fi
    #结束
  • 相关阅读:
    maven 多环境打包
    velocity 将数字转为以万为单位,保留2位小数
    mybatic 结果为null,返回0
    websocket-spring 整合
    烂泥:rsync配置文件详解
    烂泥:【转】rsync命令参数详解
    烂泥:linux文件同步之rsync学习(一)
    烂泥:使用snmpwalk采集设备的OID信息
    烂泥:apache密码生成工具htpasswd的应用
    烂泥:apache性能测试工具ab的应用
  • 原文地址:https://www.cnblogs.com/daipenglin/p/16417246.html
Copyright © 2020-2023  润新知