Alpine Linux 是一个非常轻量级的 Linux 发行版(官网),其采用 musl libc 和 busybox 以减小系统的体积和运行时资源的消耗,基本运行系统还不到5M, 同时还提供了自己包管理工具apk。 是制作Docker镜像的绝佳环境。本文就演示构建一个基础的 Alpine Linux 镜像。
本演示基于 Windows 10。 Docker Desktop 的版本为 2.1.0.1。 Docker Engine 的版本为: 19.03.1
新建 Dockfile 文件
在任意目录下新建一个名为 Dockerfile 的文件,内容如下:
1 | FROM alpine:3.8 |
以上代码的第1行声明本镜像(image)基于官方的3.8版本的镜像。
第5行我们将alpine的软件更新源改为清华大学的源,这样在安装包,更新包时会快很多。
从第7行开始,我们执行了系列的命令,更新软件包,安装了bash 和 Vim 等最基础,最常用的软件。
构建镜像(Image)
保存文件后,打开命令行窗口,在与 Dockerfile 同一目录中执行
1 | docker build -t alpine-base . |
使用 docker 的 build 子命令, 基于 Dockerfile, 构建一个标签名为 alpine-base 的 Docker 镜像。
执行命令后,系统显示
1 | Sending build context to Docker daemon 3.072kB |
构建完成后,执行
1 | docker images |
查看本地的镜像。
1 | REPOSITORY TAG IMAGE ID CREATED SIZE |
可以看到, 当前系统又两个镜像,要给是 alpine 官方的 3.8 版本镜像,只有 4.41M 大小。另一个就是我们基于官方镜像建立的自己的镜像: alpine-base。
运行容器
在 Docker 中,每个容器都是基于镜像的。要运行在上面建立的 alpine-base 镜像,可以运行
1 | docker run -t -i alpine-base /bin/bash |
该命令会自动建立一个基于 apline-base 镜像的容器,并连接到该容器的 bash 终端,就好像远程登录了一台 Linux 主机, 其中,-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i 则让容器的标准输入保持打开, 效果如下:
1 | bash-4.4# ls |
可以看到,以 root 身份登录到了 apline linux 中,并可以执行 bash 中的命令,当然也可以使用 vim 编辑文章(因为我们在最初制作镜像时安装了 vim)
这时,如果在主机上打开另外一个命令行窗口,可以察看到当前运行的容器
1 | docker ps |
系统显示
1 | CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES |
停止容器
可以执行 docker stop 命令来停止一个运行中的容器,如下:
1 | docker stop 80784fb08ff8 |
这里我们通过容器的id来指定需要停止的容器。