【发布时间】:2021-08-09 13:03:18
【问题描述】:
我正在启动一个容器来对主机文件发出一些命令。
这是通过 shell 脚本完成的:
echo "--- Starting container"
container_id=$(docker run -d -it --mount type=bind,source="$mount_path",target=/usr/share --name project-test python:3.5.2-alpine)
docker exec $container_id /bin/sh -c "cd /usr/share && pwd && ls -l"
但是这会引发一个我不明白如何解决的错误:
OCI 运行时执行失败:执行失败:container_linux.go:367:正在启动 容器进程导致:exec:“C:/Program Files/Git/usr/bin/sh”: stat C:/Program Files/Git/usr/bin/sh: 没有这样的文件或目录: 未知
我的主机是windows 10。据我所知,容器上的exec命令应该在容器内运行。但错误显示来自我的主机的路径。 为什么会这样?如何正确地向 docker 容器发送命令?
编辑:
docker exec之后容器的日志是:
Python 3.5.2 (default, Dec 27 2016, 21:33:11)
[GCC 5.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
编辑:手动发出命令的结果(预期结果)
/ # cd /usr/share && pwd && ls -l
/usr/share
total 5
-rwxr-xr-x 1 root root 347 May 20 06:31 README.md
drwxrwxrwx 1 root root 4096 May 20 08:22 myproject
docker exec $container_id ls -l /usr/share
ls: C:/Program Files/Git/usr/share: No such file or directory
【问题讨论】:
-
请分享
docker logs $container_id的输出。 -
@AntonioPetricca 更新问题。
-
尝试通过
docker exec -ti $container_id然后cd /usr/share && pwd && ls -l进入容器控制台手动发出该指令并在此处发布结果。 -
@AntonioPetricca 它给出了预期的输出(问题已更新)
-
将你的命令行减少到
docker exec $container_id ls -l /usr/share/。
标签: docker