docker:在 bash 脚本中找不到命令,但可以在 bash 中使用 docker

docker: command not found in bash script but can use docker in bash

我在 windows 服务器 2019 上使用 bash,并尝试 运行 一个简单的 bash 脚本,但是当它到达这一行时:

# check if containers are running, and stop them if they are not for the current project
all_up_ids=$(docker ps -q); 

我收到 'docker docker command not found' 错误。奇怪的是,我可以 运行 docker 和 docker-compose in bash 没问题。我已经设置了我的环境变量。我能够让 docker 命令在 bash 中工作的唯一方法是将其放入我的 .bashrc 文件

export PATH="$HOME/bin:$HOME/.local/bin:$PATH"
export PATH="$PATH:/mnt/c/Program\ Files/Docker/Docker/resources/bin"
alias docker=docker.exe
alias docker-compose=docker-compose.exe

我的环境设置是否还有问题?任何帮助表示赞赏。

Docker 信息:

Client: Docker Engine - Enterprise
 Version:           19.03.5
 API version:       1.40
 Go version:        go1.12.12
 Git commit:        2ee0c57608
 Built:             11/13/2019 08:00:16
 OS/Arch:           windows/amd64
 Experimental:      true

Server: Docker Engine - Enterprise
 Engine:
  Version:          19.03.5
  API version:      1.40 (minimum version 1.24)
  Go version:       go1.12.12
  Git commit:       2ee0c57608
  Built:            11/13/2019 07:58:51
  OS/Arch:          windows/amd64
  Experimental:     true

~/.bashrc 脚本仅针对交互式终端执行,这意味着每次打开终端 window 时,~/.bashrc 都会在该会话中执行。所以在那里定义的任何东西都不能用于脚本,因为它们是在非交互模式下执行的。

我宁愿将您的配置放入 ~/.bash_profile。该脚本仅在您打开登录时执行一次 shell,因此当您登录并启动脚本时,它也可用于该脚本。

没有直接关系(不是Ubuntu),但有相同的错误信息
以防万一...在 RHEL docker 上可以安装为 podman-docker:

sudo dnf install podman-docker