【问题标题】:Bash on alpine linux高山 linux 上的 Bash
【发布时间】:2019-04-22 22:34:50
【问题描述】:

我无法将 bash shell 放入 alpine 容器中。

我从这个 Alpine 容器开始: gitlab/gitlab-runner:alpine

我正在这个 dockerfile 中添加一个 bash shell 和其他配置:

from gitlab/gitlab-runner:alpine

ENV http_proxy=<corporate_proxy>
ENV https_proxy=<corporate_proxy>

RUN apk add vim wget curl nmap lsof bash bash-completion which

CMD ["/bin/bash"]
RUN ls -l /bin # THIS WORKS, I CAN SEE 'BASH' SHOW UP WITH 755 OWNED BY ROOT
RUN which bash # THIS ALSO WORKS
RUN /bin/bash -c "echo hi" # YES, THIS WORKS TOO

但是,当通过以下方式生成容器以使用 bash shell 时: docker run -idt &lt;image_name&gt; /bin/bash,容器以FATAL: Command /bin/bash not found.启动失败

请注意,在生成容器时,这些其他选项对我来说也会失败:ash, sh, /bin/ash, /bin/sh, etc

使用--user root 运行容器也不起作用。

【问题讨论】:

    标签: docker alpine


    【解决方案1】:

    入口点是一个 GitLab Runner 脚本。将其更改为 bash 以获取 shell 访问权限:

    $ docker run -it --entrypoint /bin/bash <image_name>
    

    【讨论】:

      【解决方案2】:

      原来在容器的入口点设置了一些时髦的东西。通过docker run 生成新容器时,我需要记住覆盖入口点。

      在 Dockerfile 中添加这一行解决了问题:

      ENTRYPOINT: []
      

      【讨论】:

        【解决方案3】:

        1- 验证您的容器是否已满载:

        docker ps
        

        所以在进入 bash shell 之后像:

        docker exec -it <<container_name>> bash
        

        【讨论】:

          猜你喜欢
          • 2019-04-15
          • 1970-01-01
          • 2020-08-03
          • 2019-11-27
          • 2018-02-04
          • 2022-11-17
          • 2019-04-22
          • 2018-06-16
          • 2020-09-07
          相关资源
          最近更新 更多