linux - Docker 容器 - 在 Win 和 Linux 上的不同行为

标签 linux windows docker containers pipeline

我有 docker 容器,我运行它,一段时间后它必须执行这一行

$(aws ecr get-login --region $AWS_DEFAULT_REGION | sed -e 's/-e none//g')

现在奇怪的是 - 当我在本地计算机 (Windows) 上运行它时,它通过并写入 Login Succeeded

当我在 Linux-Ami 代理上运行它时,一切正常,但是当它到达这一行时它输出

/app/ops/release/docker-run.sh: 51:/app/ops/release/docker-run.sh: aws: 未找到

我很困惑,因为无论何时执行,我都在使用 docker 实际上拥有相同的环境。唯一的非 docker 部分是当我构建图像并运行它时(在这部分我理解是否存在一些差异),但是其他所有内容都在两个环境中基于相同 Dockerfile 的容器中运行。

唯一真正的区别可能是在启动时传递到容器中的环境变量。

有什么想法吗?

为此容器构建镜像的 Dockerfile 的一部分是 RUN pip install --upgrade awscli

最佳答案

发现问题。

我将所有环境变量传递到容器中 -> 在 linux 上,我传递了诸如 PATH 之类的变量并销毁自动查找正确的 bin 文件夹。

如果我将其称为 /usr/local/bin/aws,它可以在两个系统上运行。仅传递相关环境变量后,aws 即可开箱即用。

关于linux - Docker 容器 - 在 Win 和 Linux 上的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54652142/

相关文章:

来自 NASM 代码的 Linux64 线程本地存储 (TLS) 数据

python - Multiprocessing.pool 错误 : raise self. _value sre_constants.error: 不平衡的括号

mysql - 如何为带有 Mysql 数据库的 Delphi 项目创建安装程序

.net - 销毁具有静态存储持续时间的本地对象

python - 在dockerfile中安装mysql?

docker - Docker Compose 3控制资源(内存,CPU)

linux - ASLR 打开时如何查找未导入的 libc 函数的地址?

未执行的代码会导致段错误吗?

java - WINE可以在Linux下打开独立的Windows应用程序吗?

centos - 我无法使用 iptables 错误启动 docker 服务