构建最小的 Docker 镜像
以 Redis 为例,先安装好 Docker 环境并编译安装 Redis;使用 ldd 命令查看 Redis 服务依赖的库,把依赖的库收集起来。1
2
3mkdir /opt/redis
whereis redis-server
ldd /usr/local/bin/redis-server
根据依赖的库所在目录,创建相应的目录:lib64,然后把相应的库文件拷贝该目录中;找到 redis-server 所在目录,在新建的 lib64 的同级目录下,创建出 Redis-Server 启动命令的目录。1
2
3cd /opt/redis
mkdir -p usr/local/bin/
cp /usr/local/bin/redis-server usr/local/bin/
打包1
tar -zcvf rootfs.tar.gz usr/* lib64/*
找到 redis 配置文件,放到 lib64 同级目录下,配置文件名称:redis.conf ,本地 redis 如果时源码编译安装的可以在源码包中找到配置文件。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18[root@localhost redis]# tree
.
├── Dockerfile
├── lib64
│ ├── ld-linux-x86-64.so.2
│ ├── libc.so.6
│ ├── libdl.so.2
│ ├── libm.so.6
│ ├── libpthread.so.0
│ └── librt.so.1
├── redis.conf
├── rootfs.tar.gz
└── usr
└── local
└── bin
└── redis-server
4 directories, 10 files
Dockerfile1
2
3
4
5FROM scratch
ADD rootfs.tar.gz /
COPY redis.conf /etc/redis/redis.conf
EXPOSE 6379
CMD ["redis-server"]
开始构建镜像1
docker build -t redis:v1 -f Dockerfile .