文章目录
  1. 1. 参考

构建docker镜像通常是通过Dockerfile文件来创建的,但也可以使用hashicorp的packer工具来创建docker镜像。构建的原理大致相同,但是使用了不同的配置语言与配置文件。

参考

packer提供了多安装方式,可以使用linux包管理工具安装,也可以直接下载二进制文件安装。下载packer工具之后, 需要编写.pkr.hcl配置文件。 HCL是一种用于描述配置的领域特定语言。

如下是一个简单的配置文件, 用于创建一个ubuntu镜像, 安装python3 mkdocs包。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
packer {
required_plugins {
docker = {
version = ">= 1.0.8"
source = "github.com/hashicorp/docker"
}
}
}

source "docker" "ubuntu" {
image = "gitea/runner-images:ubuntu-latest"
commit = true
}

build {
name = "gitea-python3-mkdocs"
sources = [
"source.docker.ubuntu"
]

provisioner "shell" {
inline = [
"mkdir -p /opt/python-mkdocs",
"python3 -m venv /opt/python-mkdocs/.venv",
"/opt/python-mkdocs/.venv/bin/pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple --upgrade pip",
"/opt/python-mkdocs/.venv/bin/pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple",
"/opt/python-mkdocs/.venv/bin/pip install mkdocs"
]
}

post-processor "docker-tag" {
repository = "gitea-python3-mkdocs"
tags = ["python3-mkdocs"]
only = ["docker.ubuntu"]
}
}

将配置文件保存为docker-ubuntu.pkr.hcl,接下来开始构建docker镜像.

1
2
3
4
5
6
7
8
9
# 初始化packer, 安装插件
packer init .
#构建镜像
packer build docker-ubuntu.pkr.hcl

# 使用docker检查镜像
docker images | grep gitea-python3-mkdocs
# 删除镜像
docker rmi gitea-python3-mkdocs:python3-mkdocs
文章目录
  1. 1. 参考