制作一个不依赖任何基础镜像的docker镜像

1、比如官方提供的hello-world镜像

#docker pull hello-world

#docker images

hello-world latest feb5d9fea6a5 2 years ago 13.3kB

可以看到这个镜像只有13.3kB

2、# docker run hello-world

只能打印一些信息

3、这个hello-world镜像的dockerfile就下面3行语句

  1. FROM scratch

    此镜像是从白手起家,从 0 开始构建。

  2. COPY hello /

    将文件"hello"复制到镜像的根目录。

  3. CMD "/hello"

    容器启动时,执行 /hello

4、我们可以扩充一下这个hello-world程序的功能,让它变得更强大。

扩充hello-world程序,还是要花费一些时间的,我们拷贝一个功能强大一些的程序吧,就用busybox了。

5、下载busybox

wget https://busybox.net/downloads/binaries/1.35.0-x86_64-linux-musl/busybox

这个程序只有1131168字节,即1.13MB

6、试用一下这个软件

#chmod +x busybox ---先增加可执行权限

#./busybox --打印这个程序的使用说明

#./busybox ls --打印当前目录下的文件和目录清单, 就是自己实现了一个简化版的ls命令

#./busybox sleep 3600 --自己实现的sleep命令

#./busybox sh --自己实现的sh shell

7、做一个自己的镜像吧

创建一个dockerfile文件

FROM scratch

COPY busybox /

CMD "/busybox"

然后 docker build -t my:v1 ./

#docker images ---看一下新作的这个镜像

REPOSITORY TAG IMAGE ID CREATED SIZE

my v1 3ba1a8427c3a 124 seconds ago 1.13MB

8、运行这个镜像

#docker run my:v1

可以看到 输出了 busybox的使用说明信息,但docker容器立刻结束了。

我们让它执行sleep命令,不要立即结束

docker run my:v1 /busybox sleep 3600

这个shell阻塞了。

重新开一个shell,docker ps一下

docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

9cc3dd651cf1 my:v1 "/busybox sleep 3600" 21 seconds ago Up 21 seconds cranky_black

登录到这个容器中

docker exec -it 9cc3dd651cf1 /busybox sh

./busybox ls

busybox dev etc proc sys

./busybox ps

PID USER TIME COMMAND

1 0 0:00 /busybox sleep 3600

7 0 0:00 /busybox sh

14 0 0:00 ./busybox ps

相关推荐
打工仔折腾 AI4 小时前
Changedetection.io 网页变动监控:Docker 部署、通知配置与公网暴露实践
运维·人工智能·后端·python·docker·容器·性能优化
无奈笑天下4 小时前
银河麒麟上lsblk命令教程详解
linux·运维·服务器·数据库
fengkai45454 小时前
Prometheus+K8s弹性伸缩综合项目
运维·kubernetes·k8s·prometheus·hpa·vpa
分布式存储与RustFS6 小时前
镜像仓库的层别只堆本地盘:用 RustFS 给 Harbor 当 S3 后端
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
xbzb8 小时前
自建镜像仓库:registry 一条命令 + harbor 部署、授权、跨库同步与卸载
docker·harbor·镜像·仓库·同步·registry
雪落漂泊8 小时前
Liunux进程(七):程序控制篇(中)
linux·运维·windows
分布式存储与RustFS9 小时前
工作流脚本和依赖 JAR 散在各节点本地盘:用 DolphinScheduler 资源中心接到 RustFS
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
分布式存储与RustFS1 天前
群晖 NAS 被 C3RB3R 锁了:本地备份一起被加密,RustFS 对象锁为什么删不掉
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
真好啊又活了一天1 天前
服务器和虚机配置IPV6
运维·服务器·github
zixu_star1 天前
定时任务是什么?从日常自动化到 AI 应用,软件如何自动执行任务?
运维·人工智能·自动化