docker.sock 尝试从未知位置运行

docker.sock 尝试从未知位置运行

在我的 ubuntu 22 docker 容器上安装 docker 桌面后,权限问题变得非常严重。我不知道如何解决这个问题,所以我卸载了 docker-desktop 应用程序和 docker 本身。现在,当我只安装 docker 时,我无法运行任何构建。似乎 docker 想要在unix:///home/{user}/.docker/desktop/docker.sock.

我不知道为什么,总是从/var/run/docker.sock

这是一个完整的错误: Cannot connect to the Docker daemon at unix:///home/kramar/.docker/desktop/docker.sock. Is the docker daemon running

/lib/systemd/system/docker.socket

[Unit] Description=Docker Socket for the API

[Socket] ListenStream=/var/run/docker.sock

SocketMode=0660

SocketUser=root

SocketGroup=docker

[Install]

WantedBy=sockets.target

/etc/init/docker.conf

description "Docker daemon"

start on (filesystem and net-device-up IFACE!=lo)
stop on runlevel [!2345]

limit nofile 524288 1048576

# Having non-zero limits causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
limit nproc unlimited unlimited

respawn

kill timeout 20

pre-start script
    # see also https://github.com/tianon/cgroupfs-mount/blob/master/cgroupfs-mount
    if grep -v '^#' /etc/fstab | grep -q cgroup \
        || [ ! -e /proc/cgroups ] \
        || [ ! -d /sys/fs/cgroup ]; then
        exit 0
    fi
    if ! mountpoint -q /sys/fs/cgroup; then
        mount -t tmpfs -o uid=0,gid=0,mode=0755 cgroup /sys/fs/cgroup
    fi
    (
        cd /sys/fs/cgroup
        for sys in $(awk '!/^#/ { if ($4 == 1) print $1 }' /proc/cgroups); do
            mkdir -p $sys
            if ! mountpoint -q $sys; then
                if ! mount -n -t cgroup -o $sys cgroup $sys; then
                    rmdir $sys || true
                fi
            fi
        done
    )
end script

script
    # modify these in /etc/default/$UPSTART_JOB (/etc/default/docker)
    DOCKERD=/usr/bin/dockerd
    DOCKER_OPTS=
    if [ -f /etc/default/$UPSTART_JOB ]; then
        . /etc/default/$UPSTART_JOB
    fi
    exec "$DOCKERD" $DOCKER_OPTS --raw-logs
end script

# Don't emit "started" event until docker.sock is ready.
# See https://github.com/docker/docker/issues/6647
post-start script
    DOCKER_OPTS=
    DOCKER_SOCKET=
    if [ -f /etc/default/$UPSTART_JOB ]; then
        . /etc/default/$UPSTART_JOB
    fi

    if ! printf "%s" "$DOCKER_OPTS" | grep -qE -e '-H|--host'; then
        DOCKER_SOCKET=/var/run/docker.sock
    else
        DOCKER_SOCKET=$(printf "%s" "$DOCKER_OPTS" | grep -oP -e '(-H|--host)\W*unix://\K(\S+)' | sed 1q)
    fi

    if [ -n "$DOCKER_SOCKET" ]; then
        while ! [ -e "$DOCKER_SOCKET" ]; do
            initctl status $UPSTART_JOB | grep -qE "(stop|respawn)/" && exit 1
            echo "Waiting for $DOCKER_SOCKET"
            sleep 0.1
        done
        echo "$DOCKER_SOCKET is up"
    fi
end script

答案1

我在 docker 版本 20 中遇到了同样的问题

卸载 docker Desktop 后。

跑步

  1. docker context ls
  2. docker context use default
  3. 如果需要,重新启动docker服务。

在 中~/.docker,我删除了上下文和桌面目录,但即使您不这样做,上述步骤仍然有效。

相关内容