我以为我了解Docker.我把它理解为一种打包具有大量依赖性的软件的方法......基本上创建了一个小小的世界,绝对一切都是为一块软件而处理的.然后我在DockerHub上偶然发现了这个
https://hub.docker.com/_/busybox/
这是BusyBox的一个图像,它是一个用于嵌入式系统的小型Linux二进制文件.然后最热门的评论说
"Busybox很棒:)到目前为止整个注册表中每个字节最有用的容器."
但我完全不明白为什么这个图像存在,这让我觉得我实际上并不理解为什么Docker存在.BusyBox docker图像有什么意义?
Cha*_*ffy 20
如果正在构建一个容器,busybox可以在不需要完整Linux发行版的情况下实现其依赖关系链,那么Busybox docker镜像非常有用.
通常,嵌入式设备只能由busybox的静态链接副本,安装procfs,sysfs和c的init脚本组成.使用busybox提供的工具,然后调用实际的应用程序.使用docker设置文件系统命名空间,即使不一定需要init脚本.
小智 14
除了作为用于其他 docker 图像的方便基础之外。Busybox 还initContainer
为 kubernetes 提供了非常方便的功能:https ://kubernetes.io/docs/concepts/workloads/pods/init-containers/
假设您需要在真正的容器开始运行之前设置 pod 文件系统,然后busybox 在这方面做得很好。
作为一个具体的例子,官方redis
镜像不会以root身份运行 redis ,因此它无法访问文件系统。如果您使用磁盘备份运行 redis(appendonly
例如在模式下),则需要为其打开该磁盘权限。
一个用于 redis 的 statefulSet 的有效(虽然可能是 hacky)initContainer 可能看起来像这样:
initContainers:
- name: redis-data-permission-fix
image: busybox
command: ["/bin/chmod", "-R", "777", "/opt/data/redis"]
volumeMounts:
- name: data
mountPath: /opt/data/redis
Run Code Online (Sandbox Code Playgroud)
但我完全不明白为什么这个镜像会存在,这让我觉得我其实并不明白Docker为什么存在。BusyBox docker 镜像有什么意义?
我刚刚开始将 BusyBox 与 docker 一起使用,但到目前为止,使用 --rm命令使用常见的内置实用程序(如ping )创建未保存的实例已经很方便了,是的,到目前为止只是 ping :/
docker container run --rm -it --network [network_name] busybox
Run Code Online (Sandbox Code Playgroud)
然后 BusyBox 中的所有这些实用程序都可以在该 docker 自定义网络上使用,并在退出BusyBox CLI时立即销毁
归档时间: |
|
查看次数: |
14391 次 |
最近记录: |