标签: busybox

Go编译的二进制文件不会在Ubuntu主机上的alpine docker容器中运行

给定一个二进制文件,使用Go编译GOOS=linux并基于此GOARCH=amd64部署到docker容器alpine:3.3,如果docker引擎主机是Ubuntu(15.10),二进制文件将不会运行:

sh: /bin/artisan: not found
Run Code Online (Sandbox Code Playgroud)

如果在Mac OS X上的VirtualBox VM中部署了docker引擎主机(它是基础),那么相同的二进制文件(针对相同的OS和arch编译)将运行得很好.busyboxalpine

如果容器基于Ubuntu映像之一,那么同样的二进制文件也将完美运行.

知道这个二进制文件丢失了吗?

这是我为重现而做的(在OS X上的VirtualBox/busybox中成功运行未显示):

构建(即使拱匹配,也使用标记显式构建):

?  artisan git:(master) ? GOOS=linux GOARCH=amd64 go build
Run Code Online (Sandbox Code Playgroud)

检查它是否可以在主机上运行:

?  artisan git:(master) ? ./artisan 
10:14:04.925 [ERROR] artisan: need a command, one of server, provision or build 
Run Code Online (Sandbox Code Playgroud)

复制到docker目录,构建,运行:

?  artisan git:(master) ? cp artisan docker/build/bin/        
?  artisan git:(master) ? cd docker 
?  docker git:(master) ? cat Dockerfile 
FROM docker:1.10
COPY build/ /
?  docker git:(master) …
Run Code Online (Sandbox Code Playgroud)

go busybox docker alpine-linux

54
推荐指数
4
解决办法
2万
查看次数

alpine docker 镜像和 busybox docker 镜像有什么区别?

alpine docker镜像和busybox docker镜像有什么区别?

当我检查他们的码头文件时,alpine 是这样的(对于 Alpine v3.12 - 3.12.7)

FROM scratch
ADD alpine-minirootfs-3.12.7-x86_64.tar.gz /
CMD ["/bin/sh"]
Run Code Online (Sandbox Code Playgroud)

busybox是这样的

FROM scratch
ADD busybox.tar.xz /
CMD ["sh"]
Run Code Online (Sandbox Code Playgroud)

但正如https://alpinelinux.org/about/所说

Alpine Linux 是围绕musl libcbusybox构建的。

那么到底有什么区别呢?

我也很好奇许多 docker 镜像(nodejs/nginx/php 仅举几例)提供基于 alpine 的镜像,但不提供基于 busybox 的镜像。这是为什么 ?那么 busybox 图像的用例是什么?我需要强调的是,我并不是在寻找关于为什么 A 比 B 更好或反之亦然的答案或软件推荐。

我的 alpine docker遇到间歇性DNS 查找失败的情况,如此处musl-libc - Alpine 的最大弱点和此处Alpine 是否在 Kubernetes 中存在已知的 DNS 问题?说。这是我提出问题的原因之一。

PS,https://musl.libc.org/说“musl 是构建在 …

linux busybox docker alpine-linux

29
推荐指数
1
解决办法
2万
查看次数

在我看到BusyBox docker图像之前,我以为我理解了Docker

我以为我了解Docker.我把它理解为一种打包具有大量依赖性的软件的方法......基本上创建了一个小小的世界,绝对一切都是为一块软件而处理的.然后我在DockerHub上偶然发现了这个

https://hub.docker.com/_/busybox/

这是BusyBox的一个图像,它是一个用于嵌入式系统的小型Linux二进制文件.然后最热门的评论说

"Busybox很棒:)到目前为止整个注册表中每个字节最有用的容器."

但我完全不明白为什么这个图像存在,这让我觉得我实际上并不理解为什么Docker存在.BusyBox docker图像有什么意义?

busybox docker

25
推荐指数
3
解决办法
1万
查看次数

错误:无法启动容器:stat/bin/sh:没有这样的文件或目录"

我一直在尝试创建自己的busybox基本映像.

# ./mkimage.sh -t pensu/busybox busybox-static
+ mkdir -p /var/tmp/docker-mkimage.US3tHy0uBQ/rootfs
+ tar --numeric-owner -caf /var/tmp/docker-mkimage.US3tHy0uBQ/rootfs.tar.xz -C /var/tmp/docker-mkimage.US3tHy0uBQ/rootfs '--transform=s,^./,,' .
+ cat > '/var/tmp/docker-mkimage.US3tHy0uBQ/Dockerfile'
+ rm -rf /var/tmp/docker-mkimage.US3tHy0uBQ/rootfs
+ docker build -t pensu/busybox /var/tmp/docker-mkimage.US3tHy0uBQ
Sending build context to Docker daemon 863.2 kB
Sending build context to Docker daemon 
Step 0 : FROM scratch
 ---> 
Step 1 : ADD rootfs.tar.xz /
 ---> 8eac78bfc9d6
Removing intermediate container ad9bbb8f7536
Successfully built 8eac78bfc9d6
+ rm -rf /var/tmp/docker-mkimage.US3tHy0uBQ
Run Code Online (Sandbox Code Playgroud)

我可以看到我的docker repo可以使用该图像.

# docker images
REPOSITORY          TAG                 IMAGE …
Run Code Online (Sandbox Code Playgroud)

busybox docker

21
推荐指数
6
解决办法
5万
查看次数

dbus_bus_request_name():不允许连接拥有该服务

我在arm上构建了一个根文件系统.它应该运行dbus-daemon和avahi-daemon,但是当我尝试运行时avahi-daemon

$ dbus-daemon --system
$ avahi-daemon
Run Code Online (Sandbox Code Playgroud)

我收到这条消息:

Found user 'avahi' (UID 4) and group 'avahi' (GID 4).
Successfully dropped root privileges.
avahi-daemon 0.6.28 starting up.
WARNING: No NSS support for mDNS detected, consider installing nss-mdns! 
dbus_bus_request_name(): Connection ":1.0" is not allowed to own the service "org.freedesktop.Avahi" due to security policies in the configuration file
WARNING: Failed to contact D-Bus daemon.
avahi-daemon 0.6.28 exiting.
Run Code Online (Sandbox Code Playgroud)

怎么了?是关于dbus配置吗?

linux dbus avahi busybox

20
推荐指数
3
解决办法
2万
查看次数

Ash(由busybox提供的shell)教程

我发现busybox的ash语法与其他标准shell(sh,bash,tcsh)不同.
是否有任何关于其语法的文档或灰分教程?

shell busybox

19
推荐指数
1
解决办法
4万
查看次数

在shell中编写二进制文件(shell,awk)

我的问题是我需要创建一个具有这个确切字节的文件:48,00,49,00

我不能使用C(因为我无法部署任何东西,没有perl,没有其他脚本语言.我尝试使用awk,在桌面上它确实有效:

# awk  'BEGIN{ printf "%c%c%c%c", 48, 00, 49, 00 }' | hexdump
0000000 0030 0031                              
0000004
Run Code Online (Sandbox Code Playgroud)

但是目标平台正在运行busybox v1.13.2,并且此代码在那里不起作用.那里的awk版本没有输出ascii"0"(所有其他值都没问题).

你有什么建议?

bash awk busybox

18
推荐指数
3
解决办法
3万
查看次数

如何使用linux软件看门狗

嗨,任何人都可以告诉我如何处理Linux中的软件看门狗.我有一个程序"SampleApplication",它持续运行,如果它意外挂起或关闭我需要重新启动它.

我正在谷歌上搜索这个,发现linux在/ dev/watchdog有看门狗,但不知道如何使用它.有人可以帮我举个例子.

我的问题是在哪里指定我的应用程序名称和延迟间隔以重新启动.由于我是linux的新手,请尽可能向我介绍样品.谢谢

linux watchdog linux-kernel busybox

18
推荐指数
3
解决办法
7万
查看次数

如何在不使用CURL的情况下运行HTTP请求

我有基于arm的busybox(嵌入式Linux)与有限的二进制文件如何http发布或放置而不使用curl?

curl busybox

15
推荐指数
2
解决办法
2万
查看次数

在alpine linux上执行mongodb二进制文件

我正在尝试在Alpine 64bit Linux中运行二进制mongodb作为docker容器.但是在运行命令时:./mongodb发生以下错误:

bash-4.3 # ./mongod
bash: ./mongod: No such file or directory.
Run Code Online (Sandbox Code Playgroud)

出于什么原因它不能运行它?

containers mongodb busybox docker

11
推荐指数
2
解决办法
9521
查看次数

标签 统计

busybox ×10

docker ×5

linux ×3

alpine-linux ×2

avahi ×1

awk ×1

bash ×1

containers ×1

curl ×1

dbus ×1

go ×1

linux-kernel ×1

mongodb ×1

shell ×1

watchdog ×1