我想要一些关于环境变量的输入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}
干杯。