Dockerfile执行权限被拒绝

时间:2020-06-02 17:46:19

标签: docker ubuntu google-cloud-platform dockerfile

我有这个dockerfile

FROM alpine:3.8
ENV LANG C.UTF-8
RUN set -x && \
    apk add --no-cache \
              openrc \
              bash \
              libreswan \
              xl2tpd \
              ppp \
    && mkdir -p /var/run/pluto \
    && mkdir -p /var/run/xl2tpd \
    && touch /var/run/xl2tpd/l2tp-control
COPY ipsec.conf /etc/ipsec.conf
COPY ipsec.secrets /etc/ipsec.secrets
COPY xl2tpd.conf /etc/xl2tpd/xl2tpd.conf
COPY options.l2tpd.client /etc/ppp/options.l2tpd.client
COPY startup.sh /
RUN ["chmod", "+x", "/startup.sh"]

CMD ["./startup.sh"]

当我在本地运行时,一切正常。但是我试图执行在gcp vm(ubuntu)中生成的映像,但是出现以下错误

/bin/sh: can't open './startup.sh': Permission denied

有人可以帮助我解决这个错误吗?

注意:我还尝试通过以下方式修改权限:

RUN ["chmod", "777", "/startup.sh"]
RUN chmod +x /startup.sh
RUN chmod 777 /startup.sh

并执行以下脚本:

ENTRYPOINT ["./startup.sh"]
RUN ["./startup.sh"]
RUN ./startup.sh

2 个答案:

答案 0 :(得分:0)

您在此处缺少添加用户以更改权限的信息 More Info

RUN useradd -ms /bin/bash  myuser

答案 1 :(得分:0)

尝试此操作将这些行添加到您的docker文件中。

RUN chown -R admin:admin /
RUN chmod 755 /

只需授予/根目录的管理员权限即可。

您的docker文件将如下所示

FROM alpine:3.8
ENV LANG C.UTF-8
RUN set -x && \
    apk add --no-cache \
              openrc \
              bash \
              libreswan \
              xl2tpd \
              ppp \
    && mkdir -p /var/run/pluto \
    && mkdir -p /var/run/xl2tpd \
    && touch /var/run/xl2tpd/l2tp-control
COPY ipsec.conf /etc/ipsec.conf
COPY ipsec.secrets /etc/ipsec.secrets
COPY xl2tpd.conf /etc/xl2tpd/xl2tpd.conf
COPY options.l2tpd.client /etc/ppp/options.l2tpd.client
COPY startup.sh /
RUN chown -R admin:admin /
RUN chmod 755 /
CMD ["./startup.sh"]