By
Vika Zhou
更新日期:
构建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 init .
packer build docker-ubuntu.pkr.hcl
docker images | grep gitea-python3-mkdocs
docker rmi gitea-python3-mkdocs:python3-mkdocs
|