当前位置: 首页 > news >正文

制作一个不依赖任何基础镜像的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

http://www.lryc.cn/news/414787.html

相关文章:

  • 【拓扑排序topsort】——启动!!!
  • 计算机网络-http协议和https的加密原理
  • 共享`pexlinux`数据文件的网络服务
  • HC32F4A0 10路串口UART 配置
  • 拯救PyCharm:击退IDE崩溃的终极策略
  • 深入解析Unix命令:掌握wc、whereis和which的使用技巧
  • 奥运会大规模使用中国AI大模型!
  • Linux中的线程3
  • 内网权限维持——利用WMI进行权限维持
  • 【数据结构算法经典题目刨析(c语言)】括号匹配问题(图文详解)
  • 浅谈 Spring AOP框架 (1)
  • Linux 面试准备 - 2024
  • C++笔记---类和对象(中)
  • 【C++】入门基础知识
  • AI的应用场景和未来展望
  • vim、sublime、notepad文本编辑器的使用
  • PyCharm中的外部更改识别:终极解决方案指南
  • Qt——QTCreater ui界面如何统一设置字体
  • Linux驱动入门实验班day03-GPIO子系统概述
  • 240803-沉侵式翻译插件配置Ollama的API实现网页及PDF文档的翻译
  • HTML-08.表单标签
  • SAP ABAP se16n 双击跳转实现
  • Linux shell编程学习笔记68: curl 命令行网络数据传输工具 选项数量雷人(上)
  • 马尔科夫决策过程
  • 未知攻焉知防:从攻击者视角看网络安全的“攻守之道”
  • 数字孪生赋能智慧城市大脑智建设方案(可编辑65页PPT)
  • c++----内存管理
  • C++——哈希结构
  • 智能小程序 Ray 开发面板 SDK —— 无线开关一键执行模板教程(一)
  • rockDB(1)