介绍

希望使用 docker 来制作镜像,首先需要选择一个基础镜像

下面是 docker 中几个系统镜像的大小

root@debian:~# docker images

REPOSITORYTAGIMAGE IDSIZE
debianbullseye5c17865bcd0f118MB
ubuntu22.04f3d495355b4e69.2MB
busyboxstable3c277069c6ae1.41MB
alpine3.153fb3c9af89a95.32MB
centoslateste6a0117ec169272MB

其中最小的是 busybox ,只是缺少了包管理工具

BusyBox 是一个集成了一百多个最常用 Linux 命令和工具(如 catechogrepmounttelnet 等)的精简工具箱,它只需要几 MB 的大小,很方便进行各种快速验证,被誉为“Linux 系统的瑞士军刀”。

第二小的是 alpine ,他的大小也远比其他的系统镜像小得多

Alpine 操作系统是一个面向安全的轻型 Linux 发行版。它不同于通常 Linux 发行版,Alpine 采用了 musl libcbusybox 以减小系统的体积和运行时资源消耗,但功能上比 busybox 又完善的多,因此得到开源社区越来越多的青睐。在保持瘦身的同时,Alpine 还提供了自己的包管理工具 apk,可以通过 https://pkgs.alpinelinux.org/packages 网站上查询包信息,也可以直接通过 apk 命令直接查询和安装各种软件。

Alpine 相关命令

一、包管理工具 apk

1、更新本地仓库索引

1
apk update

2、升级所有已安装的包

1
apk upgrade

3、搜索

1
apk search <NAME>

4、安装

1
apk add <NAME>

附件参数

--no-cache :允许不在本地缓存索引,这对于保持容器较小非常有用

--virtual :创建虚拟包,安装的软件包不会添加到全局软件包

比如说需要 gcc 来编译程序,vim 编辑内容, wget 下载程序,但是用完以后就不会再用了,就可以用创建虚拟包的方式,这里虚拟包的包名起的是 mypacks ,在使用完以后就可以通过一个卸载命令全部卸载

1
apk add --no-cache --virtual mypacks gcc vim wget

5、卸载

1
apk del <NAME>

6、查看包信息

1
2
3
4
5
6
7
# 列出所有已安装的包

apk info

# 列出某个包的详情

apk info gcc

二、服务管理

alpine 没有使用 systemctl 来进行服务管理,使用的是 rc 系列命令

首先需要安装

1
apk add --no-cache openrc
  • rc-update [参数] 服务 :主要用于不同运行级增加或者删除服务
    • add, -a :新建服务
    • del, -d :删除服务
    • show, -s :显示状态
  • rc-status [参数] :主要用于运行级的状态管理
    • –all, -a :列出所有运行等级(runlevel)下的服务状态
    • –list, -l :列出指定运行等级下的状态,若不指定运行等级,则以目前的运行等级为准
    • –unused, -u :列出未指定运行等级的服务
  • rc-service [服务] [参数] : 主用于管理服务的状态
    • –list :列出所有可用服务
    • start/stop/restart :启动/停止/重启 已有服务

比如设置 docker 开机启动

1
rc-update add docker boot
  • rc-update add xxxx default
  • rc-update add xxxx boot

这里 defaultboot 等等代表不同的 runlevel,对应所需的不同服务,默认启动就是 default

boot 启动在 default 之前完成,而且通常 boot 里面的 service 不能被停止

启动

1
rc-service docker start