我无法将 bash 外壳放入高山容器中。
我从这个阿尔卑斯容器开始: 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 外壳时: docker run -idt <image_name> /bin/bash
,容器无法启动FATAL: Command /bin/bash not found.
请注意,在生成容器时,这些其他选项对我来说也会失败:ash, sh, /bin/ash, /bin/sh, etc
使用 --user root
运行容器也不起作用。
入口点是一个 GitLab Runner 脚本。将其更改为 bash 以获得外壳访问权限:
$ docker run -it --entrypoint /bin/bash <image_name>
事实证明,在容器的入口点中设置了一些时髦的东西。 我需要记住在通过 docker run
生成新容器时覆盖入口点。
在 Dockerfile 中添加此行解决了问题:
ENTRYPOINT: []
1- 验证容器是否完全加载:
docker ps
所以之后进入 bash 外壳,如下所示:
docker exec -it <<container_name>> bash
Alpine 没有 bash,请使用 sh 代替:
docker exec -it 64103333b32 /bin/sh