Docker Engine 安装时遇到的坑

Docker Engine 安装时遇到的坑,第1张

Docker Engine 安装时遇到的坑 记录最近学习Docker on CentOS遇到的一些安装与配置问题

1、使用一键安装脚本安装失败

curl -fsSL https://get.docker.com | bash -s docker

该命令报错

---> Package docker-scan-plugin.x86_64 0:0.8.0-3.el7 will be installed
---> Package libcgroup.x86_64 0:0.41-21.el7 will be installed
---> Package libseccomp.x86_64 0:2.3.1-4.el7 will be installed
--> Finished Dependency Resolution
Error: Package: 3:docker-ce-20.10.8-3.el7.x86_64 (docker-ce-stable)
           Requires: container-selinux >= 2:2.74
Error: Package: docker-ce-rootless-extras-20.10.8-3.el7.x86_64 (docker-ce-stable)
           Requires: fuse-overlayfs >= 0.7
Error: Package: docker-ce-rootless-extras-20.10.8-3.el7.x86_64 (docker-ce-stable)
           Requires: slirp4netns >= 0.4
Error: Package: containerd.io-1.4.9-3.1.el7.x86_64 (docker-ce-stable)

解决方法:手动安装

sudo yum-config-manager 
    --add-repo 
    https://download.docker.com/linux/centos/docker-ce.repo

/etc/yum.repos.d/docker-ce.repo中添加:

[centos-extras]
name=Centos extras - $basearch
baseurl=http://mirror.centos.org/centos/7/extras/x86_64
enabled=1
gpgcheck=0

随后

sudo yum -y install docker-ce docker-ce-cli containerd.io

2、安装时报错GateWay 504
重建缓存一般可以解决

yum clean all
yum makecache 

3、Got permission denied while trying to connect to the Docker daemon socket at unix

Got permission denied while trying to connect to the Docker daemon
socket at unix:///var/run/docker.sock: Post
“http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/create?fromImage=repo.cisco.com&tag=latest”:
dial unix /var/run/docker.sock: connect: permission denied

起初搜到的都是没有add user到docker,但是执行了sudo usermod -aG docker youruser,并sudo newgrp docker后依然无效,经过各种查询,最终定位到:

stat -c %U:%G /var/run/docker.sock
root:root

相关文档

the default Docker Unix socket file should be owned by root and group
owned by docker to maintain the integrity of the socket file.

解决办法即

chown root:docker /var/run/docker.sock

最后附上自己写的installdocker.sh

#!/bin/bash

echo "Checking Docker......"
docker -v 2>/dev/null
if [ $? -eq  0 ]; then
    echo "Docker has been already installed."
else
    echo "Docker hasn't been installed, start installation..."
    sudo yum remove docker 
                  docker-client 
                  docker-client-latest 
                  docker-common 
                  docker-latest 
                  docker-latest-logrotate 
                  docker-logrotate 
                  docker-engine

    sudo yum-config-manager 
    --add-repo 
    https://download.docker.com/linux/centos/docker-ce.repo

    repoexist=`grep "centos-extras" /etc/yum.repos.d/docker-ce.repo |wc -l`
    if [ ${repoexist} -eq  0 ]; then
        echo -e "[centos-extras]nname=Centos extras - $basearchnbaseurl=http://mirror.centos.org/centos/7/extras/x86_64nenabled=1ngpgcheck=0nn$(cat /etc/yum.repos.d/docker-ce.repo)" > /etc/yum.repos.d/docker-ce.repo
    fi

    sudo yum -y install docker-ce docker-ce-cli containerd.io
    if [ $? -ne 0 ]; then
        echo "Fail to install Docker"
        exit 1
    fi

    sudo systemctl start docker

    echo "Configuring environment..."

    sudo groupadd docker 2>/dev/null
    echo "usermod -aG docker youruser"
    sudo usermod -aG docker youruser

    echo "Enable autorun at startup"
    sudo systemctl enable docker.service
    sudo systemctl enable containerd.service

    dockersock=`stat -c %U:%G /var/run/docker.sock | grep -v root:docker | wc -l`
    if [ ${dockersock} -ne 0 ]; then
        echo "chown root:docker /var/run/docker.sock"
        chown root:docker /var/run/docker.sock
    fi

    mkdir /etc/docker 2>/dev/null
    echo "{"log-driver":"json-file","log-opts": {"max-size":"50m", "max-file":"3"}}" >/etc/docker/daemon.json
    systemctl daemon-reload
    systemctl restart docker

    echo "Docker installation finished!"
fi

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5443481.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-11
下一篇2022-12-11

发表评论

登录后才能评论

评论列表(0条)

    保存