使用Docker镜像运行shell脚本

时间:2017-07-18 07:23:56

标签: shell docker

输入: - 安装了Docker Toolbox的Windows机器。 - 有一个shell脚本文件baz.sh,它调用py2dsc-deb

问题: py2dsc-deb在Windows上不可用。

据我所知,我可以从Docker存储库中提取一些Linux发行版图像,创建一个容器,然后执行shell脚本文件,它将运行py2dsc-deb并完成其工作。

我拉了:

debian - stretch-slim - 3ad21 - 3 weeks ago - 55.3MB

现在

  1. 如何使用debian运行我的脚本,例如:docker exec mycontainer /path/to/test.sh

  2. 正在运行docker --rm debian:stretch-slim无效。是不是要在docker-machine ip运行Debian发行版?

  3. 我尝试使用docker run -it debian:stretch-slim /bin/bash保持容器,然后使用docker exec 1ef5b ./build.sh运行脚本,但获取

  4.   

    $ docker exec 745 ./build.sh   rpc错误:code = 2 desc = oci运行时错误:exec失败:container_linux.go:247:启动容器进程导致“exec:\”./ build.sh \“:stat ./build.sh:没有这样的文件或目录“

    这是否意味着我无法运行外部脚本并且必须始终在Docker中传递它?

2 个答案:

答案 0 :(得分:1)

您可以通过键入

在容器内执行bash命令
docker exec -ti -u `username` `container_name` bash -c "cd /path/to/ && ./test.sh"

假设您的容器名称为test_buildbox,您是root并且您的脚本停留在/bin/test.sh内您可以通过键入

来调用此脚本
docker exec -ti -u root test_buildbox bash -c "cd /bin/ && ./test.sh

答案 1 :(得分:0)

在Windows上构建Docker映像时,请检查.sh脚本(<LF>)中的行尾是否正确。