onbuild
时间: 2023-07-26 08:09:58 浏览: 70
`ONBUILD` 是 Dockerfile 中的一个指令,它用于在构建镜像时执行一些命令或动作。当一个镜像被作为另一个镜像的基础镜像时,基础镜像中的 `ONBUILD` 指令将在构建过程中自动触发执行。这在需要将一些通用的构建操作放到基础镜像中,并在后续的镜像构建中重复使用时非常有用。
`ONBUILD` 指令的语法如下:
```
ONBUILD [INSTRUCTION]
```
其中 `[INSTRUCTION]` 可以是任何其他的 Dockerfile 指令,例如 `RUN`、`COPY`、`CMD` 等。常见的用法是在基础镜像中添加一些应用程序代码,并在后续的镜像构建中使用 `ONBUILD` 指令将这些代码拷贝到新的镜像中。这样就可以避免在每个应用程序镜像中都重复添加相同的代码。
相关问题
dockerfile 项目实例
Dockerfile 是一个文本文件,它包含了用于创建 Docker 镜像的指令。下面是一个简单的 Dockerfile 示例,展示如何创建一个基础镜像并安装一个Web服务器软件(如Nginx)[^1]:
```dockerfile
# 使用官方的 Ubuntu 基础镜像
FROM ubuntu:latest
# 设置 maintainer 信息
MAINTAINER Your Name <your.email@example.com>
# 更新包列表并安装 Nginx
RUN apt-get update && apt-get install -y nginx
# 暴露默认的 Nginx 端口
EXPOSE 80
# 在启动时运行 Nginx 服务
CMD ["nginx", "-g", "daemon off;"]
# 如果在该 Dockerfile 上添加了 ONBUILD 指令,它们不会立即执行,而是保存在镜像中,供后续基于此镜像的构建使用
# 示例(ONBUILD 不在此处显示,因为它不影响基础镜像的创建)
# ONBUILD ...
# 这里省略了构建阶段的实际操作,当你运行 `docker build -t your-image-name .` 来构建镜像时,Docker 将根据这个文件的指令来操作
```
在这个例子中,`docker build` 命令会读取 Dockerfile 的内容,执行每一行命令,最终生成一个新的镜像。如果在项目目录下有这样一个 Dockerfile,你可以通过 `docker build -t my_nginx_image .` 来构建名为 `my_nginx_image` 的镜像。
docker tar包获取imagesid
您想了解如何从 Docker 镜像的 tar 包中获取镜像 ID 吗?可以通过以下步骤来获取:
1. 将 Docker 镜像保存为 tar 包。例如,将名为 `nginx` 的镜像保存为 `nginx.tar`,可以使用以下命令:
```
docker save nginx > nginx.tar
```
2. 解压 tar 包并查看 manifest 文件,其中包含镜像的元数据(包括 ID)。可以使用以下命令:
```
tar -xvf nginx.tar
cat manifest.json
```
在输出中,您将看到 `Config` 部分包含有关镜像的元数据,其中包括 `digest` 和 `size`。 `digest` 就是镜像 ID。
```
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": null,
"Cmd": null,
"Image": "sha256:1fa6c578aee4f4b4c0e6f2a6c74b916eab36beb15642ed1d8a5f23a2f7e3376d",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {}
},
```
通过以上步骤,您可以轻松地从 Docker 镜像的 tar 包中获取镜像 ID。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)