使用 containerd 和 buildkit 打包镜像
所用环境: containerd/runc/buildkit/nerdctl
如果还没安装 containerd 和 runc, 请自行安装
或者直接下载完整版的 nerdctl, 会包含 containerd 和 runc
docker 同样适用,并且不用安装工具链,nerdctl 替换为 docker 即可
安装 nerdctl
1. 下载
如果是已有 containerd, 则下载纯净的 nerdctl
sh
1 | wget https://github.com/containerd/nerdctl/releases/download/v1.3.1/nerdctl-1.3.1-linux-amd64.tar.gz` |
2. 解压
sh
1 | tar Cxzvvf /usr/local/bin nerdctl-1.3.1-linux-amd64.tar.gz |
3. 启动并测试
sh
1 | sudo systemctl enable --now containerd |
安装 buildkit
1. 下载并解压
sh
1 | wget https://github.com/moby/buildkit/releases/download/v0.11.6/buildkit-v0.11.6.linux-amd64.tar.gz |
2. 编写 systemd unit 文件
实现自启动
sh
1 | sudo vim /etc/systemd/system/buildkit.service |
写入如下内容
plaintext
1 | [Unit] |
3. 启动
sh
1 | sudo systemctl enable --now buildkit.service |
打包镜像测试
这里使用一个 main.go
小程序做测试,dockerfile 如下
dockerfile
1 | # 使用golang官方镜像作为基础镜像 |
接着打包并运行镜像,在 dockerfile
的同目录运行如下
sh
1 | sudo nerdctl pull golang |
就可以看到容器已经运行成功
上传镜像
登录 docker.hub
sh
1 | docker login -u <username> -p <passwd> |
然后打标签和上传即可
sh
1 | docker tag <username>/<reponame> <username>/<reponame>:v1.0 |
本博客采用 CC BY-NC-SA 4.0 许可。转载请声明来自 Juice's Blog!