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