Bootstrap

Docker 镜像制作原理 做一个自己的docker镜像

一.手动制作镜像

  1. 启动容器
  2. 进入容器定制
  3. 基于容器生成镜像

1.启动容器

启动容器之前我们首先要有一个镜像,这个镜像可以是从docker拉取,例如:现在pull一个ubuntu镜像到本机。

docker pull ubuntu:22.04

 我们接下来可以基于这个容器进行容器定制。

2.进入容器定制

基于镜像启动容器,进入到容器进行定制:

docker run -it ubuntu:22.04 bash

更换一下国内的源,docker cp 可以把本机的源拷贝到容器,我这里直接用了容器的源。

安装一些定制容器所需要的包:

 apt -y install wget curl net-tools procps psmisc iputils-ping iproute2 vim tzdata tcpdump telnet traceroute tree iotop unzip zip nfs-common lrzsz && apt clean

3.基于容器生成镜像

包装完之后退出,可以基于这个容器生成一个镜像

docker commit xenodochial_chandrasekhar ubuntu:22.04-myself
docker images 此时可以看到自己做的镜像了

 基于自己做的镜像,创建容器,看看工具有没有

docker run -it 81924198f671

 可以看到工具是有的

二.批量制作镜像(docker file).

Alpine 是一个轻量级的 Linux 发行版,广泛用于容器化环境和嵌入式系统中。它以体积小、安全性高和运行效率高而闻名。

首先创建目录,在目录下创建dockerfile目录,这样层次分明一些

创建一个容器查看alpine ,以及更换镜像源,以及安装想要安装的工具(curl,vim,tree等) alpine 更新源使用的是apk update

root@zhangxin-virtual-machine:/data/dockerfile/base/alpine-myself# vim Dockerfile

FROM alpine:3.18.0
LABEL maintainer="zhangxin kk"
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/' /etc/apk/repositories &&  apk update && apk --no-cache add gcc curl wget iotop libgcc libc-dev libcurl libc-utils pcre-dev zlib-dev libnfs make pcre pcre2 zip unzip net-tools pstree libevent libevent-dev iproute2
docker build -t alpine-myself:3.18.0 .

 

构建成功  此时 docker images 以及可以看到我们自己构建的镜像

 

 运行我们构建的镜像: 可以看到刚才安装的工具已经都有了

 自己构建的镜像比原镜像大了不少:

;