自建脚本安装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
#结束

 

posted @ 2022-06-27 19:06  Martdai  阅读(350)  评论(0编辑  收藏  举报