中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

busybox怎么使用

發布時間:2022-03-24 17:21:44 來源:億速云 閱讀:1127 作者:iii 欄目:web開發

這篇文章主要講解了“busybox怎么使用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“busybox怎么使用”吧!

什么是基礎鏡像(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"]

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

busybox怎么使用

宿主機器

[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

busybox怎么使用

創建目錄并進入

[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怎么使用”的內容了,經過本文的學習后,相信大家對busybox怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阿图什市| 龙川县| 宁陕县| 任丘市| 荣昌县| 云南省| 澄江县| 蓝山县| 龙泉市| 阜康市| 晋宁县| 蓬莱市| 墨竹工卡县| 叶城县| 平潭县| 合阳县| 宁阳县| 隆子县| 鄂伦春自治旗| 太谷县| 随州市| 布尔津县| 化德县| 龙南县| 资兴市| 恩施市| 林州市| 崇阳县| 新余市| 南汇区| 巴彦县| 斗六市| 宾川县| 江永县| 景宁| 平南县| 木兰县| 板桥市| 商水县| 承德县| 开平市|