为什么我的包含 docker 命令的 Bash 脚本不起作用,即使脚本存在于 $PATH 下

为什么我的包含 docker 命令的 Bash 脚本不起作用,即使脚本存在于 $PATH 下

我有一个用于启动 docker 容器的 bash 脚本文件 (startKms)。脚本的详细信息位于本问题的末尾。startKms 文件位于 $HOME/myscripts,并在 $HOME/bin 中添加了一个软链接,以便可以从任何位置执行该命令。当我执行 startKms 或 sudo startKms 时,shell 会提示未找到命令。但是,如果我将软链接放在 /usr/local/sbin 下并执行 sudo starKms,则脚本可以正常工作。如果我不使用 sudo 执行,则会收到以下错误消息。

“尝试连接到 unix:///var/run/docker.sock 上的 Docker 守护进程套接字时,权限被拒绝:获取 http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/json?filters=%7B%22name%22%3A%7B%22kms%22%3Atrue%7D%7D:拨号 unix /var/run/docker.sock:连接:权限被拒绝 在 Docker 上启动 Kurento Media Server .... 尝试连接到 unix:///var/run/docker.sock 上的 Docker 守护进程套接字时,权限被拒绝:发布 http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/kms/start:拨号 unix /var/run/docker.sock:连接:权限被拒绝 错误:无法启动容器:kms”

哪个 docker 指向 /usr/bin/docker $PATH 包含所有三个位置 1. $HOME/bin 2. /usr/local/sbin 和 3. /usr/bin

  1. 为什么当文件放在 $HOME/bin 下时找不到我的命令,尽管 $PATH 有这个位置?
  2. 为什么当我将命令放在 /usr/local/sbin 下并以 sudo 身份运行时,命令可以正常工作?
  3. 为什么我会收到上述与权限相关的错误消息?

我没有设置为以非 root 用户身份使用 Docker,即按照这里的建议将用户添加到 docker 组安装 docker 我是 Linux 新手,在笔记本电脑上安装了 Ubuntu。没有对 .bashrc .profile 等进行任何更改

#!/bin/bash
if [ ! "$(docker ps -qf name=kms)" ];then
echo "Starting Kurento Media Server on Docker ...."
docker start kms
exit 1
fi 
echo -e "\e[1;31mKurento Media Server is already running\e[0m"

相关内容