用 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)