AI 问答
你是一个数学家,请问9.9和9.11哪个大?
企业微信机器人发送消息脚本
AI 问数实现主要步骤
人类感知延迟
Chrome 存储介绍
浏览器缓存
Linux 命令行中 && 和 ; 区别和用法
Windows 系统怎么修改 CPU 的显示型号信息和查看真实的 CPU 型号信息
at 命令详细指南
如何确保提交代码到 git 上时 CRLF 转成 LF
Apache License 2.0
从 0 创建一个 docker 镜像
Linux 文件系统及分区表和 LVM
Linux 查看分区表类型
Windows 批量文件名重命名
将文本文件中的 CRLF 批量转换为 LF
批量将 GB2312 编码转换为 UTF-8 编码
分区类型 MBR 和 GPT 有什么区别
exFAT 和 FAT32 有什么区别
文件的元数据 是什么
花括号展开(Brace Expansion)
cat 显示特殊字符
图标文件有什么在线制作的站点
发布 Chrome 扩展程序的步骤
常用加密方式
密码学的常用攻击方式
3D 打印学习路径
新手 FDM 3D 打印学习路径
Linux 备份和还原 PostgreSQL 数据库方案
数学符号
通过 nginx 转发解决跨域问题
所有希腊字母及其读法
通过 Docker Compose 部署 lscr.io/linuxserver/libreoffice 服务
通过 Docker Compose 部署 libreoffice/online
在 Linux 上为 Docker 配置代理
数学公式测试
祖宗十八代
Windows 重启文件管理器
小米手机怎么设置特殊号码
国债逆回购终极操作指南(2025完整版)——从基础原理到高阶自动交易策略
本文档使用 MrDoc 发布
-
+
首页
从 0 创建一个 docker 镜像
`scratch` 镜像是一个特殊的、空的基础镜像,它实际上并不存在于 Docker Hub 上,因此你不能像拉取其他镜像那样拉取 `scratch` 镜像。`scratch` 是 Docker 内置的一个保留名称,用于表示从零开始构建镜像。 当你在 Dockerfile 中使用 `FROM scratch` 时,Docker 知道你是从一个空的基础镜像开始构建,而不是从某个预先存在的镜像开始。 以下是一个完整的示例,展示如何使用 `scratch` 镜像创建一个最小的 Docker 镜像: 1. **编写一个简单的 C 程序**: 创建一个名为 `hello.c` 的文件,内容如下: ```c #include <stdio.h> int main() { printf("Hello, World!\n"); return 0; } ``` 2. **编译程序**: 使用静态链接编译这个程序,以确保所有依赖都包含在可执行文件中: ```sh gcc -static -o hello hello.c ``` 3. **创建 Dockerfile**: 创建一个名为 `Dockerfile` 的文件,内容如下: ```Dockerfile FROM scratch COPY hello / CMD ["/hello"] ``` 这里的 `FROM scratch` 表示从一个空的基础镜像开始。`COPY hello /` 将编译好的可执行文件复制到镜像的根目录。`CMD ["/hello"]` 指定容器启动时运行的命令。 4. **构建镜像**: 在包含 Dockerfile 和编译好的 `hello` 可执行文件的目录中运行以下命令来构建 Docker 镜像: ```sh docker build -t my-hello-app . ``` 5. **运行容器**: 使用构建的镜像来运行一个容器: ```sh docker run my-hello-app ``` 你应该会看到输出 `Hello, World!`。 通过这种方式,你可以创建一个完全自定义的 Docker 镜像,而不依赖任何预先存在的基础镜像。这种方法适用于需要极简镜像或特殊需求的场景。
七宇轩远
2024年08月08日
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码