用 Docker 运行操作系统
Busybox
BusyBox 是一个集成了一百多个常用 Linux 命令的精简工具箱,总大小只有不到 2MB。通过在 Docker 中运行 Busybox 容器,可以快速创建一个轻量级的测试环境,用于验证命令的使用和测试脚本的运行。
在 Docker Hub 上搜索并下载:
[root@server4 ~]$ docker search --filter=is-official=true busybox
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
busybox Busybox base image. 2379 [OK]
[root@server4 ~]$ docker pull busybox
[root@server4 ~]$ docker images busybox
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest 16ea53ea7c65 5 weeks ago 1.24MB
使用 -it
方式启动交互式容器:
[root@server4 ~]$ docker run -it busybox
/ # vi
[1]+ Stopped (signal) vi
/ # ls /bin
[ dnsdomainname id mkfs.minix rev tee
[[ dos2unix ifconfig mkfs.vfat rm telnet
acpid dpkg ifdown mknod rmdir telnetd
add-shell dpkg-deb ifenslave mkpasswd rmmod test
甚至带有 httpd
服务:
root@k8s-204:~$ docker run -d -p 18080:80 busybox httpd -f -p 80 -h /var/www
root@k8s-204:~# curl 127.0.0.1:18080
<HTML><HEAD><TITLE>404 Not Found</TITLE></HEAD>
<BODY><H1>404 Not Found</H1>
The requested URL was not found
</BODY></HTML>
Alpine
Alpine 操作系统是一个面向安全的轻型 Linux 发行版,它采用 musl libc 和 BusyBox 来减小系统体积和资源消耗,比 BusyBox 功能更完善。
Alpine Docker 镜像仅 5 MB 左右大小,由于 Alpine 还提供了包管理工具 apk
查询和安装软件包。所以被 Docker 官方推荐为默认基础环境镜像。使用 alpine 作为基础镜像的镜像名会在后面加上 -alpine,例如 python:3.5-alpine。
可以在 Docker Hub 上搜索下载:
[root@server4 ~]$ docker search --filter=is-official=true alpine
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
alpine A minimal Docker image based on Alpine Linux… 8012 [OK]
[root@server4 ~]$ docker pull alpine
[root@server4 ~]$ docker images alpine
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine latest 14119a10abf4 8 weeks ago 5.6MB
运行时可以将需要在 alpine 中运行的命令写在 docker run
最后:
[root@server4 ~]$ docker run alpine echo '555'
555
在 alpine 容器中安装软件使用 apk add
命令,软件包名可以到 https://pkgs.alpinelinux.org/packages 搜索到:
~ # apk add vim
(1/5) Installing xxd (8.2.3437-r0)
(2/5) Installing lua5.3-libs (5.3.6-r0)
(3/5) Installing ncurses-terminfo-base (6.2_p20210612-r0)
(4/5) Installing ncurses-libs (6.2_p20210612-r0)
(5/5) Installing vim (8.2.3437-r0)
Executing busybox-1.33.1-r3.trigger
OK: 25 MiB in 19 packages
Debian/Ubuntu
Debian 和 Ubuntu 都属于 Debian 系列的服务器操作系统。在一些大型软件镜像中,被作为基础镜像使用。
在 Docker Hub 上搜索并下载相应镜像:
[root@server4 ~]$ docker search --filter=is-official=true debian
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
ubuntu Ubuntu is a Debian-based Linux operating sys… 12999 [OK]
debian Debian is a Linux distribution that's compos… 4039 [OK]
[root@server4 ~]$ docker pull debian
[root@server4 ~]$ docker pull ubuntu
使用 docker run
命令可以直接运行镜像:
[root@server4 ~]$ docker run --rm -it debian
root@67c7d35efc34:/# echo $SHELL
/bin/bash
root@67c7d35efc34:/# cat /etc/issue
Debian GNU/Linux 11 \n \l
如果考虑以 Ubuntu 作为基础镜像,通常首先使用 apt-get
命令来更新和安装软件包:
[root@server4 ~]$ docker run --rm -it ubuntu
root@a5c5f0b0a7d5:/# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.3 LTS"
root@a5c5f0b0a7d5:/# apt-get update
Fetched 19.5 MB in 5s (3616 kB/s)
Reading package lists... Done
root@a5c5f0b0a7d5:/# apt-get install -y curl
CentOS/Fedora
CentOS 和 Fedora 都是基于 Red Hat 的 Linux 发行版:
[root@server4 ~]$ docker search --filter=is-official=true centos
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS. 6810 [OK]
[root@server4 ~]$ docker pull centos
CentOS 最新版为 8.4 版本,一般使用的是 CentOS:7 版本.
[root@server4 ~]$ docker run -it --rm centos
[root@be4eb8a8025a /]$ cat /etc/centos-release
CentOS Linux release 8.4.2105
[root@server4 ~]$ docker run -it --rm centos:7
[root@e6de73058535 /]$ cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)