如何构建包含docker-client的镜像
在很多场景下我们可能会在容器中调用docker命令,如何操作本文可以做一下简单介绍。
- 选择基础镜像
可以安装docker client的系统很多,看你如何选择。为了精简镜像大小我选择了alpine作为基础镜像。 - 构建安装有docker客户端的镜像
- Dockerfile
1
2FROM alpine:3.5
RUN apk add --no-cache docker - 构建镜像
1
2
3
4
5
6
7docker build -t registry.cn-hangzhou.aliyuncs.com/mojo/docker .
//查看一下构建出来的镜像大小
docker images | grep docker
输出:
registry.cn-hangzhou.aliyuncs.com/mojo/docker latest cdf628f037a4 7 minutes ago 123MB - 验证
1
2
3
4
5
6
7
8
9
10
11//启动容器
docker run -it --entrypoint /bin/sh -v /var/run/docker.sock:/var/run/docker.sock --name alpine registry.cn-hangzhou.aliyuncs.com/mojo/docker
//运行docker命令
docker ps
输出:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bb80ea0ee311 registry.cn-hangzhou.aliyuncs.com/mojo/docker "/bin/sh" 3 seconds ago Up 2 seconds docker
6b3c5064ddf8 alpine "/bin/sh" 23 minutes ago Up 22 minutes alpine
8504459d3f00 dev_registry "/entrypoint.sh serve" 4 weeks ago Up 12 hours 0.0.0.0:5000->5000/tcp dev_registry_1
0b176b5e5983 registry.cn-hangzhou.aliyuncs.com/wise2c-hf/registry-database:v1.0.0 "docker-entrypoint.sh" 7 weeks ago Up 12 hours 0.0.0.0:3306->3306/tcp mysql