有没有办法让我在容器内运行 bash 脚本,然后删除容器,所有内容都在一行中?该脚本应该能够写入它当前所在的文件夹。
我试过了
docker run --rm -ti ubuntu:trusty bash -c 'source runme.sh'
但是 bash 找不到该文件,我猜测是因为容器无法访问脚本所在的文件夹。
答案1
如果该脚本在容器内不可用,则需要将脚本作为卷挂载到容器内:
$ cat << EOF > sample_script.sh
echo 'Hello, world'
EOF
运行docker容器如下(这里/path/to/sample_script.sh
是宿主机中的路径):
$ docker run -v /path/to/sample_script.sh:/sample_script.sh \
--rm ubuntu bash sample_script.sh
Hello, world
执行后容器将被删除。请注意,您不需要以交互方式运行它,系统将显示标准输出。
这docker 运行参考资料中包含有关以这种方式使用卷的详细信息。
答案2
如果您想要做的只是执行一个脚本,那么您可以使用 bash 从 stdin 读取该脚本。
sample_script.sh < docker run --rm -i ubuntu bash -c 'source /dev/stdin'