先来了解一下 Alpine Linux:Alpine Linux是一个由社区开发的Linux操作系统,该操作系统以安全为理念,面向x86路由器防火墙虚拟专用网、IP电话盒及服务器而设计。目前比较流行的 rootfs 应该就是 alpine 了,因为他的体积特别小,最简单的环境只需要 5M 。Docker 官方已开始推荐使用 Alpine 替代之前的 Ubuntu 做为基础镜像环境。

下面以ZeroMQ官网的示例程序为例,实现在alpine基础镜像中,集成g++编译环境以及zmq运行环境并制作镜像,之后运行查看效果。

部署步骤

第一步:基础镜像准备

首先拉去一下 alpine 镜像:

docker pull alpine

看一下大小:

# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 831691599b88 6 days ago 215MB
debian latest 1b686a95ddbf 2 weeks ago 114MB
alpine latest a24bb4013296 3 weeks ago 5.57MB
ubuntu latest 1d622ef86b13 2 months ago 73.9MB

只有4m多,作为基础镜像应该是很理想的。相比于 CentosdebianUbuntu 在体积上确实很有优势。

下载完镜像,可以把这个迷你的linux启动起来,进去玩玩

docker run -it alpine /bin/sh

alpine 的软件包管理系统是 APK ,比如安装 gccg++ 编译环境,需要运行如下命令:

// 修改国内源
echo "<https://mirror.tuna.tsinghua.edu.cn/alpine/v3.8/main>" > /etc/apk/repositories
echo "<https://mirror.tuna.tsinghua.edu.cn/alpine/v3.8/community>" >> /etc/apk/repositories
// 安装gcc、g++
apk add gcc
apk add g++

如果要安装 libzmq 则执行下面代码:

apk add zeromq-dev

第二步:创建Dockerfile文件,制作镜像

建议新建一个文件夹放Dockerfile文件,后面需要放入Docker容器的文件也可以放在该文件夹中,方便管理。

mkdir docker_zmq_server
cd docker_zmq_server

在文件夹中新建 Dockerfile 文件,以下是文件参考内容: