构建最小镜像Alpine
镜像大小其实是衡量容器打包技术的重要指标,在不影响应用正常运行的情况下,尽量让容器镜像变得更小,这样,不管是从安全还是维护效率角度来讲,都是最佳实践。而 Alpine 镜像是一个基于Alpine Linux发行版构建的一个轻量级的Docker镜像,它的目标是提供一个安全、简单、高效的操作系统。
- 1.编写 dockerfile 用于封装一个新的镜像
cat > /opt/dockerfile-alpine.yml <<EOF
FROM python:alpine3.12
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
RUN apk update && apk add bash curl wget sshpass
RUN apk add tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && apk del tzdata
#.若不需要安装ansible可去掉
RUN apk add ansible openssh
RUN mkdir -p /etc/ansible && echo "localhost" > /etc/ansible/hosts
RUN ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
EOF
- 2.使用 docker build 构建基础镜像,耗时约 00:00:49,镜像大小约 248MB
time docker build -f /opt/dockerfile-alpine.yml -t alpine:3.12 .
docker images | grep alpine
- 3.利用新的镜像启动alpine容器
docker run -it -d --name alpine alpine:3.12 sh
docker ps -a | grep alpine
- 4.测试一下新的alpine容器
docker exec -it alpine sh
> netstat -lnpt
> cat /etc/os-release
- x.清理痕迹
docker stop $(docker ps -a | grep alpine | awk '{print $1}')
docker rm $(docker ps -a | grep alpine | awk '{print $1}')
docker rmi -f $(docker images -qf dangling=true)
docker rmi -f $(docker images | grep alpine | awk '{print $3}')