contained容器环境,使用 nerdctl build 构建镜像遇到报错,需安装buildit
·
你遇到的问题
[root@vms72 qyq]# nerdctl build -t centos:v1 . -f dockerfile
ERRO[0000] `buildctl` needs to be installed and `buildkitd` needs to be running, see https://github.com/moby/buildkit error="failed to ping to host unix:///run/buildkit-default/buildkitd.sock: exec: \"buildctl\": executable file not found in $PATH\nfailed to ping to host unix:///run/buildkit/buildkitd.sock: exec: \"buildctl\": executable file not found in $PATH"
FATA[0000] no buildkit host is available, tried 2 candidates: failed to ping to host unix:///run/buildkit-default/buildkitd.sock: exec: "buildctl": executable file not found in $PATH
failed to ping to host unix:///run/buildkit/buildkitd.sock: exec: "buildctl": executable file not found in $PATH
[root@vms72 qyq]#
BuildKit 完整安装步骤
1. 拉取 buildkit 镜像(通过已有的 SWR 镜像源)
nerdctl pull moby/buildkit:latest
2. 提取二进制文件到系统路径
nerdctl create --name buildkit-tmp moby/buildkit:latest
nerdctl cp buildkit-tmp:/usr/bin/buildctl /usr/local/bin/buildctl
nerdctl cp buildkit-tmp:/usr/bin/buildkitd /usr/local/bin/buildkitd
chmod +x /usr/local/bin/buildctl /usr/local/bin/buildkitd
nerdctl rm buildkit-tmp
3. 创建 systemd 服务
cat > /etc/systemd/system/buildkitd.service <<'EOF'
[Unit]
Description=BuildKit
Documentation=https://github.com/moby/buildkit
[Service]
ExecStart=/usr/local/bin/buildkitd \
--oci-worker=false \
--containerd-worker=true \
--containerd-worker-namespace=k8s.io
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
4. 配置 BuildKit 的 Docker Hub 镜像源(关键步骤)
mkdir -p /etc/buildkit
cat > /etc/buildkit/buildkitd.toml <<'EOF'
[registry."docker.io"]
mirrors = ["https://092e211b458010910f65c00d50ae8fc0.mirror.swr.myhuaweicloud.com"]
EOF
5. 启动服务
systemctl daemon-reload
systemctl enable --now buildkitd
6.再次构建镜像,提示成功。
[root@vms72 qyq]# nerdctl build -t centos:v1 . -f dockerfile
[+] Building 4.7s (9/9) FINISHED
=> [internal] load build definition from dockerfile 0.0s
=> => transferring dockerfile: 239B 0.0s
=> WARN: MaintainerDeprecated: Maintainer instruction is deprecated in favor of using label (line 2) 0.0s
=> [internal] load metadata for docker.io/library/centos:7 1.5s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [1/4] FROM docker.io/library/centos:7@sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4 0.0s
=> => resolve docker.io/library/centos:7@sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 34B 0.0s
=> CACHED [2/4] RUN rm -rf /etc/yum.repos.d/* 0.0s
=> CACHED [3/4] COPY centos7.repo /etc/yum.repos.d/ 0.0s
=> CACHED [4/4] RUN yum install net-tools -y && yum install iproute -y && yum clean all 0.0s
=> exporting to docker image format 3.1s
=> => exporting layers 0.0s
=> => exporting manifest sha256:f778a52af881ffbead3021eaed16dae2929f97f41d866886603292931a19141e 0.0s
=> => exporting config sha256:6de7a1d32ff04450eb2974a8c4cf9841e5252a9b690cfb6a9585fb3e05a895d9 0.0s
=> => sending tarball 3.1s
unpacking docker.io/library/centos:v1 (sha256:f778a52af881ffbead3021eaed16dae2929f97f41d866886603292931a19141e)...
Loaded image: docker.io/library/centos:v1
[root@vms72 qyq]# nerdctl images|grep v1
centos v1 f778a52af881 11 minutes ago linux/amd64 254.3MB 84.17MB
[root@vms72 qyq]#
更多推荐

所有评论(0)