Docker 运行 bash 脚本,然后删除容器

Docker 运行 bash 脚本,然后删除容器

有没有办法让我在容器内运行 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'

相关内容