为什么我无法在Shell脚本中运行docker命令

时间:2018-08-16 05:57:19

标签: docker dockerfile

我尝试使用#!/usr/bin/bash#!/usr/bin/env/sh#!/usr/bin/env/ bash

docker run -t -i image-id /bin/sh是我使用和使用的ls,我看到文件在那里

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS               NAMES
9c970708c1a3        bd24c6bef682        "/bin/sh -c 'sh benc…"   7 minutes ago       Exited (127) 7 minutes ago                       amazing_lovelace

我能够分别运行这两个命令,它们都可以工作

echo "Getting the Container Name"
containerName=$(docker ps -l --format '{{.Names}}' 2>&1)


echo "Transfering the text file"
docker cp $containerName:/benchmark.txt /Users/xxxx/Devlocal/xxxxx/tests/logs/benchmark.txt

放入shell脚本并运行时,我得到:错误

benchmark.sh: line 13: docker: not found
The command '/bin/sh -c sh benchmark.sh' returned a non-zero code: 127

请帮助 dockerfile

FROM gliderlabs/alpine:3.5
MAINTAINER LN

RUN apk add --update alpine-sdk openssl-dev
RUN apk add --no-cache git

RUN git clone https://github.com/giltene/wrk2.git && cd wrk2 && make
ADD ["benchmark.sh", "/benchmark.sh"]
RUN sh benchmark.sh

1 个答案:

答案 0 :(得分:1)

您在容器内调用的脚本执行docker命令。这仅在容器中安装了docker的情况下才有效,从它的外观看,不是。

如果您唯一的目的是访问文件/benchmarks.txt,则可以在启动容器时挂载它:

docker run -d -v /Users/xxxx/Devlocal/xxxxx/tests/logs/benchmark.txt:/benchmark.txt ...

请注意,您必须将RUN touch /benchmark.txt添加到Dockerfile中。

原因是here