精华内容
下载资源
问答
  • busybox镜像

    2018-10-28 22:36:40
    busybox镜像,内置了很多linux工具,使用方法: docker load -i busyboxtar.gz
  • 关于Busybox镜像.pdf

    2021-09-14 16:37:46
    关于Busybox镜像.pdf
  • 关于Busybox镜像

    万次阅读 2018-02-11 22:04:03
    一 简介Busybox是一个集成了一百多个最常用Linux命令和工具的软件工具箱,它在单一的可执行文件中提供了精简的Unix工具集。BusyBox可运行于多款POSIX环境操作系统中,如Linux(包括Andoroid)、Hurd、FreeBSD等。...
    一 简介
    Busybox是一个集成了一百多个最常用Linux命令和工具的软件工具箱,它在单一的可执行文件中提供了精简的Unix工具集。BusyBox可运行于多款POSIX环境操作系统中,如Linux(包括Andoroid)、Hurd、FreeBSD等。
    Busybox既包含了一些简单实用的工具,如cat和echo,也包含了一些更大,更复杂的工具,如grep、find、mount以及telnet。可以说BusyBox是Linux系统的瑞士军刀。

    二 实战
    1、在DockerHub中搜索Busybox相关镜像。
    最受欢迎的镜像携带offical标记,说明它是官方镜像
    2、使用docker pull命令下载该镜像
    如果不指定标签,Docker会下载最新版本的Busybox镜像,可看看该镜像十分小巧,只有1.13MB。
    3、运行Busybox
    启动一个Busybox容器,并在容器中执行grep命令。
    查看容器内挂载信息
    Busybox镜像虽然小巧,但提供了常用的LInux命令,读者可以使用它快速属性Linux命令。
    展开全文
  • list at busybox@busybox.net. a well-written bug report should include a transcript of a shell session that demonstrates the bad behavior and enables anyone else to duplicate the bug on their own ...
  • BusyBox Copyright (C) 2015-2019 Anton Skshidlevsky, GPLv2 This application is an BusyBox installer for Android. BusyBox combines tiny versions of many common UNIX utilities into a single small ...
  • 要在搭建的k3s上验证访问均衡,本来准备用python实现一个web服务器来进行验证,无意间发现busybox中带有httpd,可以作为web服务器,所以就捣鼓了一下,结果还真可以。 环境: 软件 版本 Ubuntu 20.04 ...

    要在搭建的k3s上验证访问均衡,本来准备用python实现一个web服务器来进行验证,无意间发现busybox中带有httpd,可以作为web服务器,所以就捣鼓了一下,结果还真可以。

    环境:

    软件版本
    Ubuntu20.04
    Docker20.10.2
    k3sv1.21
    go1.16.4

    实现步骤:

    用busybox作为容器创建pod,然后在busybox容器中运行httpd,创建web服务器,当web服务器接收到请求后,返回当前pod的名称;用NodePort服务将pod暴露出来,就可以通过NodePort服务将请求发送到web服务器,通过返回的pod名称来验证k3s的访问均衡。

    代码:

    busybox-deployment.yaml

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: busybox-dp
    spec:
      replicas: 5
      selector:
        matchLabels:
          app: busybox
      template:
        metadata:
          labels:
            app: busybox
        spec:
          containers:
            - name: busybox
              image: busybox
              imagePullPolicy: IfNotPresent
              command: ["/bin/sh","-c","mkdir /www && echo $HOSTNAME > /www/index.html && httpd -p 8080 -h /www && tail -f /dev/null"]
    

    busybox-nodeport-svc.yaml

    apiVersion: v1
    kind: Service
    metadata:
      name: busybox-svc
    spec:
      type: NodePort
      selector:
        app: busybox
      ports:
        - port: 8080
          targetPort: 8080
    

     

    展开全文
  • 忙碌 安装了 go 的 busybox docker 镜像
  • 今天小编就为大家分享一篇关于Docker利用busybox创建基础镜像(base image),小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • apt-get install -y busybox-static rm -rf /tmp/rootfs mkdir -p /tmp/rootfs cd /tmp/rootfs busybox=which busybox for module in busybox --list-full do mkdir -p dirname "$module" ln -sf /bin/busybox “$...
    #!/bin/bash
    #安装busybox静态软件包
    apt-get install -y busybox-static
    rm -rf /tmp/rootfs
    mkdir -p /tmp/rootfs
    cd /tmp/rootfs
    busybox=`which busybox`
    #生成busybox文件系统
    for module in `busybox --list-full`
    do
            mkdir -p `dirname "$module"`
            ln -sf /bin/busybox "$module"
    done
    set -x
    rm -rf bin/busybox
    cp $busybox bin/
    
    tar -czf busybox.tar.gz ./*
    #生成做busybox的Dockerfile
    tee Dockerfile <<-'EOF'
    From scratch
    ADD busybox.tar.gz /
    CMD ["/bin/sh"]
    EOF
    
    cat Dockerfile
    #构建busybox镜像
    docker build -t busybox:v1 -f Dockerfile .
    set +x
    cd -
    rm -rf /tmp/rootfs
    
    展开全文
  • 利用busybox创建基础镜像(base image)

    千次阅读 2018-05-26 07:02:05
    Docker镜像的首行从FROM alpine之类的镜像开始,但是最初的基础镜像是如何创建的,本文使用一个busybox创建一个基础镜像,相信在此过程中会对docker一些相关的概念有进一步的理解。 什么是基础镜像(base image) ...

    Docker镜像的首行从FROM alpine之类的镜像开始,但是最初的基础镜像是如何创建的,本文使用一个busybox创建一个基础镜像,相信在此过程中会对docker一些相关的概念有进一步的理解。

    什么是基础镜像(base image)

    简单来说,基础镜像就是没有From或者FROM scratch开头的Dockerfile所构建出来的镜像。比如alpine,这个很小的linux镜像目前只有4M左右

    [root@kong ~]# docker images |grep alpine
    docker.io/alpine                latest              3fd9065eaf02        4 months ago        4.15 MB
    [root@kong ~]#

    它的Dockerfile很简单,只有三行,这就是一个基础镜像,

    FROM scratch
    ADD rootfs.tar.xz /
    CMD ["/bin/sh"]

    在接下来的文章中我们将会像alpine那样来创建一个自己的基础镜像。

    busybox

    概要说明

    busybox被称为嵌入式linux的瑞士军刀,这句话是在busybox自己介绍自己的时候提出的(The Swiss Army Knife of Embedded Linux)。busybox整合了很多小的unix下的通用功能到一个小的可执行文件之中,简单来说在unix或者linux下常用的那些功能在这里你都能找到,但是为了busybox的目标:嵌入式的linux,大小对于busybox来说是非常重要的优化要素和限制,这些功能有可能会有所阉割,但是对于一般需求来说已经足够。而alpine就是在busybox基础上增加了自己的包管理工具apk等功能创建了风靡一时的小巧镜像。busybox是用C语言开发的基于GPL的开源项目,目前的稳定版本为1.28.4

    项目说明
    官方网站https://busybox.net/
    开源/闭源开源
    License类别GPL License v2
    代码管理地址https://busybox.net/downloads/
    开发语言C
    当前版本1.28.4 (2018/05/22)

    宿主机器

    [root@kong ~]# uname -a
    Linux kong 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
    [root@kong ~]# cat /etc/redhat-release 
    CentOS Linux release 7.4.1708 (Core) 
    [root@kong ~]#

    下载busybox

    简单可以直接使用的二进制最新的版本为1.28.1

    [root@kong ~]# wget https://busybox.net/downloads/binaries/1.28.1-defconfig-multiarch/busybox-x86_64
    --2018-05-25 04:51:20--  https://busybox.net/downloads/binaries/1.28.1-defconfig-multiarch/busybox-x86_64
    Resolving busybox.net (busybox.net)... 140.211.167.122
    Connecting to busybox.net (busybox.net)|140.211.167.122|:443... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 1001112 (978K)
    Saving to: 'busybox-x86_64'
    
    100%[==============================================================================================>] 1,001,112   19.3KB/s   in 30s    
    
    2018-05-25 04:51:57 (32.4 KB/s) - 'busybox-x86_64' saved [1001112/1001112]
    
    [root@kong ~]#

    设定busybox

    [root@kong ~]# cp busybox-x86_64 /usr/local/bin/busybox
    [root@kong ~]# chmod +x /usr/local/bin/busybox
    [root@kong ~]# which busybox
    /usr/local/bin/busybox
    [root@kong ~]#

    版本确认

    输入busybox可以看出版本以及熟悉的linux下的工具,仔细看一遍就会理解busybox号称自己是瑞士军刀一点都不夸张,反过来说,瑞士军刀如果敢号称linux里的busybox可能会引起非议。

    [root@kong ~]# busybox
    BusyBox v1.28.1 (2018-02-15 14:34:02 CET) multi-call binary.
    BusyBox is copyrighted by many authors between 1998-2015.
    Licensed under GPLv2. See source distribution for detailed
    copyright notices.
    
    Usage: busybox [function [arguments]...]
       or: busybox --list[-full]
       or: busybox --install [-s] [DIR]
       or: function [arguments]...
    
        BusyBox is a multi-call binary that combines many common Unix
        utilities into a single executable.  Most people will create a
        link to busybox for each function they wish to use and BusyBox
        will act like whatever it was invoked as.
    
    Currently defined functions:
        [, [[, acpid, add-shell, addgroup, adduser, adjtimex, arch, arp, arping, ash, awk, base64, basename, beep, blkdiscard, blkid,
        blockdev, bootchartd, brctl, bunzip2, bzcat, bzip2, cal, cat, chat, chattr, chgrp, chmod, chown, chpasswd, chpst, chroot, chrt,
        chvt, cksum, clear, cmp, comm, conspy, cp, cpio, crond, crontab, cryptpw, cttyhack, cut, date, dc, dd, deallocvt, delgroup,
        deluser, depmod, devmem, df, dhcprelay, diff, dirname, dmesg, dnsd, dnsdomainname, dos2unix, dpkg, dpkg-deb, du, dumpkmap,
        dumpleases, echo, ed, egrep, eject, env, envdir, envuidgid, ether-wake, expand, expr, factor, fakeidentd, fallocate, false,
        fatattr, fbset, fbsplash, fdflush, fdformat, fdisk, fgconsole, fgrep, find, findfs, flock, fold, free, freeramdisk, fsck,
        fsck.minix, fsfreeze, fstrim, fsync, ftpd, ftpget, ftpput, fuser, getopt, getty, grep, groups, gunzip, gzip, halt, hd, hdparm,
        head, hexdump, hexedit, hostid, hostname, httpd, hush, hwclock, i2cdetect, i2cdump, i2cget, i2cset, id, ifconfig, ifdown,
        ifenslave, ifplugd, ifup, inetd, init, insmod, install, ionice, iostat, ip, ipaddr, ipcalc, ipcrm, ipcs, iplink, ipneigh,
        iproute, iprule, iptunnel, kbd_mode, kill, killall, killall5, klogd, last, less, link, linux32, linux64, linuxrc, ln, loadfont,
        loadkmap, logger, login, logname, logread, losetup, lpd, lpq, lpr, ls, lsattr, lsmod, lsof, lspci, lsscsi, lsusb, lzcat, lzma,
        lzop, makedevs, makemime, man, md5sum, mdev, mesg, microcom, mkdir, mkdosfs, mke2fs, mkfifo, mkfs.ext2, mkfs.minix, mkfs.vfat,
        mknod, mkpasswd, mkswap, mktemp, modinfo, modprobe, more, mount, mountpoint, mpstat, mt, mv, nameif, nanddump, nandwrite,
        nbd-client, nc, netstat, nice, nl, nmeter, nohup, nproc, nsenter, nslookup, ntpd, nuke, od, openvt, partprobe, passwd, paste,
        patch, pgrep, pidof, ping, ping6, pipe_progress, pivot_root, pkill, pmap, popmaildir, poweroff, powertop, printenv, printf, ps,
        pscan, pstree, pwd, pwdx, raidautorun, rdate, rdev, readahead, readlink, readprofile, realpath, reboot, reformime,
        remove-shell, renice, reset, resize, resume, rev, rm, rmdir, rmmod, route, rpm, rpm2cpio, rtcwake, run-init, run-parts,
        runlevel, runsv, runsvdir, rx, script, scriptreplay, sed, sendmail, seq, setarch, setconsole, setfattr, setfont, setkeycodes,
        setlogcons, setpriv, setserial, setsid, setuidgid, sh, sha1sum, sha256sum, sha3sum, sha512sum, showkey, shred, shuf, slattach,
        sleep, smemcap, softlimit, sort, split, ssl_client, start-stop-daemon, stat, strings, stty, su, sulogin, sum, sv, svc, svlogd,
        swapoff, swapon, switch_root, sync, sysctl, syslogd, tac, tail, tar, taskset, tcpsvd, tee, telnet, telnetd, test, tftp, tftpd,
        time, timeout, top, touch, tr, traceroute, traceroute6, true, truncate, tty, ttysize, tunctl, ubiattach, ubidetach, ubimkvol,
        ubirename, ubirmvol, ubirsvol, ubiupdatevol, udhcpc, udhcpd, udpsvd, uevent, umount, uname, unexpand, uniq, unix2dos, unlink,
        unlzma, unshare, unxz, unzip, uptime, users, usleep, uudecode, uuencode, vconfig, vi, vlock, volname, w, wall, watch, watchdog,
        wc, wget, which, who, whoami, whois, xargs, xxd, xz, xzcat, yes, zcat, zcip
    [root@kong ~]

    创建rootfs

    这张图在镜像基础介绍的时候已经被无数次看到了,rootfs是linux中重要的概念,而alpine中也有ADD rootfs.tar.xz这样一句,接下来我们将了解一下如何生成一个简单的rootfs
    这里写图片描述

    创建目录并进入

    [root@kong ~]# mkdir rootfs
    [root@kong ~]# cd rootfs/
    [root@kong rootfs]#

    创建rootfs

    执行如下语句

    for module in `busybox --list-modules`
    do
      mkdir -p `dirname "$module"`
      ln -sf /bin/busybox "$module"
    done

    执行日志

    [root@kong rootfs]# for module in `busybox --list-modules`
    > do
    >   mkdir -p `dirname "$module"`
    >   ln -sf /bin/busybox "$module"
    > done
    [root@kong rootfs]#

    结果确认

    [root@kong rootfs]# ls
    bin  linuxrc  sbin  usr
    [root@kong rootfs]# find . -type d
    .
    ./usr
    ./usr/bin
    ./usr/sbin
    ./sbin
    ./bin
    [root@kong rootfs]# 

    将busybox拷贝至新创建的./bin目录下

    这样,上述命令的链接对象就存在了

    [root@kong rootfs]# cp /usr/local/bin/busybox bin/
    [root@kong rootfs]# ls -l bin/busybox
    -rwxr-xr-x. 1 root root 1001112 May 25 05:27 bin/busybox
    [root@kong rootfs]#

    创建rootfs.tar

    此处注意相对路径,而后续次相对路径会展开至/下,从而创建新的系统的rootfs,这也是从零搭建linux(linux from scratch)的重要操作之一。

    [root@kong rootfs]# tar cpf rootfs.tar .
    tar: ./rootfs.tar: file is the archive; not dumped
    [root@kong rootfs]#

    简单说明:busybox –list-modules列出了busybox的所有模块,然后以此为基础,创建了一个小型的rootfs
    [root@kong rootfs]# busybox –list-modules |wc -l
    389
    [root@kong rootfs]#

    准备Dockerfile

    准备一个一行的Dockerfile

    [root@kong rootfs]# vi Dockerfile
    [root@kong rootfs]# cat Dockerfile 
    From scratch
    [root@kong rootfs]#

    创建base镜像,由于没有发现具体的内容,所以未创建出具体镜像。另外,本文为了演示方便,直接在此处创建Dockerfile,这并不是一个好主意,实际的时候请不要这样做,如果当前目录下有100G的文件,就会无比缓慢,而且也不规范,无关物品需要清场。

    [root@kong rootfs]# docker build -t busyboxbase:latest .
    Sending build context to Docker daemon 2.415 MB
    Step 1/1 : FROM scratch
     ---> 
    No image was generated. Is your Dockerfile empty?
    [root@kong rootfs]# docker images |grep busyboxbase
    [root@kong rootfs]# 

    from scracth

    有From,这个scratch可以pull么,目前的版本已经将其作为一个保留名称

    [root@kong rootfs]# docker search scratch |grep 'an explicitly empty'
    docker.io   docker.io/scratch                           an explicitly empty image, especially for ...   407       [OK]       
    [root@kong rootfs]# docker pull scratch
    Using default tag: latest
    Error response from daemon: 'scratch' is a reserved name
    [root@kong rootfs]#

    将此Dockerfile添加一行没有实际作用的,看看scratch到底是什么

    [root@kong rootfs]# vi Dockerfile 
    [root@kong rootfs]# cat Dockerfile 
    From scratch
    MAINTAINER LiuMiao <liumiaocn@outlook.com>
    [root@kong rootfs]#

    进行构建,发现产生了一个0字节的镜像文件,也与scratch的原意相通

    [root@kong rootfs]# docker build -t busyboxbase:latest .
    Sending build context to Docker daemon 2.415 MB
    Step 1/2 : FROM scratch
     ---> 
    Step 2/2 : MAINTAINER LiuMiao <liumiaocn@outlook.com>
     ---> Running in b118fd7c73a7
     ---> 2074dc76c09e
    Removing intermediate container b118fd7c73a7
    Successfully built 2074dc76c09e
    [root@kong rootfs]# docker images |grep busyboxbase
    busyboxbase                     latest              2074dc76c09e        14 seconds ago      0 B
    [root@kong rootfs]#

    至此,我们理解了from scratch确实不会有额外的添加,接下来我们像alpine那样添加如下两句

    ADD rootfs.tar /
    CMD ["/bin/sh"]

    我们的Dockerfile也是几乎一样的三行

    [root@kong rootfs]# cat Dockerfile 
    From scratch
    ADD rootfs.tar /
    CMD ["/bin/sh"]
    [root@kong rootfs]#

    这样就创建了一个1M的busybox为基础的镜像

    [root@kong rootfs]# docker build -t busyboxbase:latest .
    Sending build context to Docker daemon 2.415 MB
    Step 1/3 : FROM scratch
     ---> 
    Step 2/3 : ADD rootfs.tar /
     ---> 0fbb0c8c7579
    Removing intermediate container 8311e96f456c
    Step 3/3 : CMD /bin/sh
     ---> Running in efb85c4526bf
     ---> 02270c80a4e4
    Removing intermediate container efb85c4526bf
    Successfully built 02270c80a4e4
    [root@kong rootfs]# docker images |grep busyboxbase
    busyboxbase                     latest              02270c80a4e4        9 seconds ago       1.01 MB
    [root@kong rootfs]# 

    运行并使用

    使用docker run发现此镜像所启动的容器并无异常之处

    [root@kong rootfs]# docker run --rm -it busyboxbase sh
    / # hostname
    b7f9e9646746
    / # uname -a
    Linux b7f9e9646746 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 GNU/Linux
    / #

    总结

    这篇文章介绍了如何使用busybox结合from scratch机制创建docker的基础镜像以及相关原理。本文利用busybox 1.28.1版本创建了一个1.01M的可用的基础镜像,从瑞士军刀到瑞士指甲刀,你可以继续优化到若干K都是可行的,但是到了10M以下其实应该更多考虑的是后续的扩展性和功能性的因素了。但是从另外的角度考虑,集成进来了那么多功能的同时,也将这些功能的不安定因素也集成进来了。利用from scratch机制,创建小并且依赖性少的上下文环境是非常有用的。

    参考文献

    https://docs.docker.com/develop/develop-images/baseimages/

    展开全文
  • 今天小编就为大家分享一篇关于Alpine镜像中telnet转移至busybox-extras,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • Busybox基于Buildroot 2014.11容器和 rootfs 构建器,用于配备curl-7.39.0最小 Docker 基础镜像,包括 SSL/TLS 支持。 对于Buildroot 2015.02查看分支。 rootfs 构建可以在tarmaker目录中找到。 它深受radial/...
  • 这是一个最小的busybox镜像,专门为运行Open vSwitch而烘焙它包含: 忙箱 开放式SSL Python 2.7 Kmod ( lsmod , insmod , modprobe ) 使用此图像 在 Dockerfile 中,您可以编写 FROM socketplane/busybox 或者...
  • # 依赖的基础镜像 FROM xxx # 添加jar包 ...故为了使用shell和linux命令,方便我们进入容器管理与操作,我们的基础镜像可以使用alpine或busybox,这两个比较轻量级,同时可以使用shell与linux命令 ...
  • busybox.tar

    2020-04-14 10:52:03
    busybox工具镜像
  • busybox创建文件系统及镜像制作

    千次阅读 2013-01-28 20:17:51
     这里主要用busybox工具来创建文件系统,以及用mkyaffs2image工具来将创建后的文件系统制作成可下载到开发板中 的镜像 .img 文件。  首先安装busybox工具(网上资源很多的),解压后进入文件目录,这个和配置剪切...
  • 如果有了busybox-dig镜像,则作这事就简单多了。 如下命令,直接部署 kubectl run busybox -it --image=datica/busybox-dig --restart=Never --rm sh 上述命令会直接进入容器内,使用如下命令,即可进行DNS...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,920
精华内容 5,568
关键字:

busybox镜像