Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将shell或bash添加到docker映像(基于Debian GNU/Linux的无发行版)_Bash_Docker_Dockerfile_Glibc_Docker Entrypoint - Fatal编程技术网

将shell或bash添加到docker映像(基于Debian GNU/Linux的无发行版)

将shell或bash添加到docker映像(基于Debian GNU/Linux的无发行版),bash,docker,dockerfile,glibc,docker-entrypoint,Bash,Docker,Dockerfile,Glibc,Docker Entrypoint,我想将shell或bash添加到我的映像中以执行安装命令 我已将虚拟机上的/bin/bash复制到Dockerfile上的图像中: COPY /bin/bash /bin/ 但当我执行docker命令时: docker run -it --entrypoint "/bin/bash" <my_image> docker运行-it--entrypoint”/bin/bash 然后我得到以下错误: /bin/bash:加载共享库时出错:libtinfo.so.5:无法打开共享对象

我想将
shell
bash
添加到我的映像中以执行安装命令

我已将虚拟机上的
/bin/bash
复制到
Dockerfile
上的图像中:

COPY /bin/bash /bin/
但当我执行docker命令时:

 docker run -it --entrypoint "/bin/bash" <my_image>
docker运行-it--entrypoint”/bin/bash
然后我得到以下错误:

/bin/bash:加载共享库时出错:libtinfo.so.5:无法打开共享对象文件:没有此类文件或目录


感谢您的帮助

这是因为您试图在
docker
中使用动态编译的
bash
,而不需要
glibc
支持

TL;博士
  • 。。。使用而不是经典
    bash
    你可以走,也可以跑
  • 或者为
    alpine
    添加
    bash
    :将此行添加到
    Dockerfile
    运行apk add--no cache bash
Alpine
是一个基于
musl
的发行版 许多docker映像都是以
alpine
作为基础映像构建的:
alpine
(通常)体积小且速度快:

下面是流行操作系统映像的大小

资料来源:

图像大小的差异是惊人的:范围从1MB的BusyBox一直到230MB的Fedora。看到集群的发生是很有趣的。Alpine和BusyBox是轻量级的,接近0MB,然后像Debian和Ubuntu这样的中量级软件大约有100MB,最大的是像CentOS和OracleLinux这样的重量级软件,增加了200MB

musl
不包含
libtinfo
有关
glibc
musl

另外,即使在空容器中,您也可以从
scratch

您现在可以添加busybox

您是否可以将此问题扩展为包含,特别是包括Dockerfile的
FROM
行?(它是“Distorless”还是“基于Debian发行版”?)您通常如何将软件安装到此映像中?(是否包含某种包管理器?)您好@DavidMaze,在我的Dokerfile中,我使用基于nginx配置的不可发行性的api gate way映像感谢您的消息@Yasen。我将尝试使用这个'RUN apk add--no cache bash',我已经在Dockerfile上添加了命令:'RUN apk add--no cache bash',但是我有一个错误:步骤4/5:RUN apk add--no cache bash-->在99bf0a92c050 OCI运行时运行创建失败:container\u linux。go:348:启动容器进程导致“exec:\”/bin/sh\“:stat/bin/sh:没有这样的文件或目录”:未知如果不能使用shell,如何执行“apk”命令?无发行版docker映像没有shell。
FROM scratch
ADD bash
ENTRYPOINT ['/bash']