我的Dockerfile内容如下:
FROM amd64/ubuntu:xenial-20180726
ARG GETH_REPO="https://github.com/ethereum/go-ethereum"
ARG GETH_VERSION="v1.8.12"
CMD ["/bin/bash", "-c", "git clone ${GETH_REPO} && \
cd go-ethereum && \
git fetch origin ${GETH_VERSION} && \
git checkout ${GETH_VERSION} && \
make geth && \
touch /var/log/geth_log"]
基本上,我想从存储库下载并构建。 但是,当我运行创建的图像时,出现以下错误
$ docker run -it <imageid>
/bin/sh: 1: [/bin/bash,: not found
我已确保可以通过登录到运行中的容器来执行这些操作。
我想念什么吗?
答案 0 :(得分:1)
您的json语法无效,因此docker将其作为带外壳程序的字符串运行,而不是执行它。您的命令中没有需要bash的内容,因此可以将默认/ bin / sh与字符串语法一起使用:
FROM amd64/ubuntu:xenial-20180726
ARG GETH_REPO="https://github.com/ethereum/go-ethereum"
ARG GETH_VERSION="v1.8.12"
RUN git clone ${GETH_REPO} && \
cd go-ethereum && \
git fetch origin ${GETH_VERSION} && \
git checkout ${GETH_VERSION} && \
make geth && \
touch /var/log/geth_log
请注意,所有步骤都将作为容器的默认启动命令运行,而不是在构建时执行。您可能想用RUN替换CMD。