我想要一些关于环境变量的输入podman-compose和podman(我尝试过docker并docker-compose得到相同的结果),请考虑以下场景:
我有一个二进制my-binary文件/tmp/my-binaries:
#!/bin/sh
echo "Hello World"
我创建了一个docker-compose.yml:
version: "3"
services:
test-container:
image: python:3.9-slim
environment:
- PATH="/home/minkiu/.local/bin:/home/minkiu/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/home/minkiu/.pyenv/bin:/tmp/my_binaries"
volumes:
- "/tmp/my_binaries:/tmp/my_binaries"
command: ["my-binary"]
我试图追加到PATH我有我的二进制文件的目录并用volumes密钥映射它。
现在我的期望是,podman-compose up我应该看到Hello World,但事实并非如此,我得到:
Error: unable to start container <container-id>: executable file `my-binary` not found in $PATH: No such file or directory: OCI runtime attempted to invoke a command that was not found
125
默认情况下podman-compose的输出非常冗长,所以我可以看到命令:
podman create --name=podman-test_test-container_1 --pod=podman-test --label io.podman.compose.config-hash=123 --label io.podman.compose.project=podman-test --label io.podman.compose.version=0.0.1 --label com.docker.compose.container-number=1 --label com.docker.compose.service=test-container -e PATH="/home/minkiu/.local/bin:/home/minkiu/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/home/minkiu/.pyenv/bin:/tmp/my_binaries" -v /tmp/my_binaries:/tmp/my_binaries --add-host test-container:127.0.0.1 --add-host podman-test_test-container_1:127.0.0.1 python:3.9-slim my-binary
所以我抓住相同的命令,并执行podman run:
podman run --rm -e PATH="/home/minkiu/.local/bin:/home/minkiu/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/home/minkiu/.pyenv/bin:/tmp/my_binaries" -v /tmp/my_binaries:/tmp/my_binaries python:3.9-slim my-binary
我得到了预期的输出。
一些研究让我意识到这run是create, start and attach合而为一的。
所以我的问题是,为什么不通过podman-compose并且它通过了podman run?
真的不止吗?podman run_podman {create,start,attach}
干杯。