node镜像仓库,node设置镜像
chanong
|编译步骤请参考官方资料[1]并运行编译命令。
[root@node01 projectcalico]# make -C node image '构建依赖版本'BIRD_VERSION=v0.3.3-151-g767b5389'测试依赖版本'CNI_VER=master'Calico git版本'GIT_VERSION=make:目录`/home 输入/go/gopath/src/github.com/projectcalico/node'mkdir -p .go-pkg-cache bin /home/go/gopath/pkg/mod docker run --rm --net=host -- init -e GOPRIVATE=' github.com/tigera/*' -e GO111MODULE=on -v /home/go/gopath/pkg/mod:/go/pkg/mod:rw -e LOCAL_USER_ID=0 -e GOCACHE=/go-cache -e GOARCH=amd64 - e GOPATH=/go -e OS=linux -e GOOS=linux -e GOFLAGS=-v /home/go/gopath/src/github.com/projectcalico/node:/go/src/github.com/projectcalico/node:rw - v /home/go/gopath/src/github.com/projectcalico/node/.go-pkg-cache:/go-cache:rw -w /go/src/github.com/projectcalico/node calico/go-build:v0.40 sh -c ' go mod download'.从UID : 0useradd: UID 0 开始不是唯一su-exec: getpwnam(user): Successmake: *** [remote-deps] 错误1make: 目录` 离开/home/go/gopath/src /github.com/projectcalico/node' 从日志中可以看出,构建在Remote-deps 阶段失败,并出现错误useradd: UID 0 is not unique。从日志中启动容器的docker命令来看,它有一个参数LOCAL_USER_ID=0,表示我们要以root用户启动容器,但在这个过程中我们是通过运行useradd命令来添加用户的(理论上,你不应该在这里这样做)。分析calico-node的entrypoint.sh可以看出,以root用户启动时,代码在第10行结束,判断用户是否为root的标准是RUN_AS_ROOT参数。
#!/bin/bash# 添加本地用户# 如果在运行时传递则使用LOCAL_USER_ID 或#fallbackUSER_ID=${LOCAL_USER_ID:-9001}if [ '${RUN_AS_ROOT}'='true' ]; then exec '$@' fiecho 'UID : $USER_ID' 12# 不创建邮箱。 /bin/sed -i 's/^CREATE_MAIL_SPOOL=yes/CREATE_MAIL_SPOOL=no/' /etc/default/useradd# '不要传递-m' 如果主目录已存在(如果卷已安装),则运行useradd if主目录已经存在。否则就会失败。 if [[ ! -d '/home/user' ]]; 则/usr/sbin/useradd -m - U -s /bin/bash -u $USER_ID userelse /usr/sbin/useradd -U -s /bin/bash -u $USER_ID userfi.exec /sbin/su-exec user '$@' from make 结果,未找到RUN_AS_ROOT 变量。当我检查calico-node的Makefile时,它没有定义。我怀疑您缺少RUN_AS_ROOT 变量的定义。
[root@node01 projectcalico]# grep -r 'RUN_AS_ROOT' ./node/如果参考官网的信息[2],你会看到go-build Makefile中包含了针对root用户的处理。
ifeq ('$(LOCAL_USER_ID)', '0')# 构建必须以root 身份运行。 EXTRA_DOCKER_ARGS+=-e RUN_AS_ROOT='true'endif 同步更改calico-node的Makefile文件。
[root@node01 projectcalico]# grep -r 'RUN_AS_ROOT' ./node/./node/Makefile.common: EXTRA_DOCKER_ARGS+=-e RUN_AS_ROOT='true' 再次运行make 命令。
[root@node01 projectcalico]# make -C node image '构建依赖版本'BIRD_VERSION=v0.3.3-151-g767b5389'测试依赖版本'CNI_VER=master'Calico git版本'GIT_VERSION=make:目录`/home 输入/go/gopath/src/github.com/projectcalico/node'mkdir -p .go-pkg-cache bin /home/go/gopath/pkg/mod docker run --rm --net=host -- init -e GOPRIVATE=' github.com/tigera/*' -e RUN_AS_ROOT='true' -e GO111MODULE=on -v /home/go/gopath/pkg/mod:/go/pkg/mod:rw -e GOCACHE=/go -cache -e GOARCH=amd64 -e GOPATH=/go -e OS=linux -e GOOS=linux -e GOFLAGS=-e LOCAL_USER_ID=0 -v /home/go/gopath/src/github.com/projectcalico/node: /go/src/github .com/projectcalico/node:rw -v /home/go/gopath/src/github.com/projectcalico/node/.go-pkg-cache:/go-cache:rw -w /go/src/github.com/projectcalico/node - e CGO_ENABLED=1 calico/go-build:v0.40 sh -c ' go build -v -o dist/bin//calico-node-amd64 -ldflags ' -X github.com/projectcalico/node/pkg/startup.VERSION=-X github.com/projectcalico/node/buildinfo.GitVersion=-X github.com/projectcalico/node/buildinfo.BuildDate=2023-05-09T06:06:42+0000 -X github.com/projectcalico/node /buildinfo.GitRevision=' ./cmd/calico-node/main.go'github.com/kelseyhightower/confd/pkg/backendsgithub.com/projectcalico/libcalico-go/lib/apis/v1/unversionedgithub.com/projectcalico/libcalico-go/lib/backend/encap.以UID : 9001calico-node-amd64 -vdocker build --pull -t calico/node:latest-amd64 开始. --build-arg BIRD_IMAGE=calico/bird:v0.3.3-151- g767b5389-amd64 --build -arg QEMU_IMAGE=calico/go-build:v0.40 --build-arg GIT_VERSION=-f ./Dockerfile.amd64将构建上下文发送到Docker 守护进程66.3MB 步骤1/40 : ARG ARCH=x86_64 步骤2/40 : ARG Git_version=Unknown步骤3/40 : ARG IPTABLES_VER=1.8.2-16 步骤4/40 : ARG RUNIT_ver=2.1.2 步骤5/40 : ARG Bird_image=Cali=Cali Co/Bird:LATEST 步骤6/40 : 来自Calico /bpftool:v5.3- amd64 as bpftool .步骤16/40 : 运行dnf install -y 'dnf-command(config-manager)' dnf config-manager --set-enabled PowerTools yum install -y rpm-build yum- utils make yum install - y wget glibc-static gcc yum -y update-minimal --security --sec-severity=Critical --sec-severity=Critical --- eca2b4c5f0b4CentOS 在Linux 8 上运行- AppStream 51 B/s | 38 B 00:00Error: 无法下载metadata forrepository 'appstream': 无法准备内部镜像列表: 镜像列表中没有URL 从编译日志来看,问题是依赖包的yum 安装有错误。原因是使用了默认源vault.centos.org,修改了Dockerfile.amd64,替换为:国内阿里巴巴信息来源[3]:
-ARG CENTOS_MIRROR_BASE_URL=http://vault.centos.org/8.1.1911+ARG CENTOS_MIRROR_BASE_URL=https://mirrors.aliyun.com/centos-vault/8.1.1911+RUN mv /etc/yum.repos.d /etc/yum.repo.d- bk \+ mkdir -p /etc/yum.repos.d mv /centos.repo /etc/yum.repos.d \+ yum clean all yum makecache \ dnf install -y 'dnf-command(config-manager)' \ # 为“-devel”包启用PowerTools 存储库- dnf config-manager --set-enabled 修改PowerTools \centos.repo 文件以跳过gpgcheck 验证并添加PowerTool 源。
[centos-8-base-os]name=CentOS - BaseOSbaseurl=https://mirrors.aliyun.com/centos-vault/8.1.1911/BaseOS/x86_64/osenabled=1gpgkey=https://mirrors.aliyun.com/keys/RPM-GPG-KEY -CentOS-Officialgpgcheck=0[centos-8-appstream]name=CentOS -AppStreambaseurl=https://mirrors.aliyun.com/centos-vault/8.1.1911/AppStream/x86_64/osenabled=1gpgkey=https://mirrors.aliyun.com/keys/RPM -GPG-KEY-CentOS-Officialgpgcheck=0[Centos8-PowerTool-local1]name=Centos8-PowerTool-local1baseurl=https://mirrors.aliyun.com/centos-vault/8.1.1911/PowerTools/x86_64/osenabled=1gpgcheck=0 编译继续:
.docker build --pull -t calico/node:latest-amd64 . --build-arg BIRD_IMAGE=calico/bird:v0.3.3-151-g767b5389-amd64 --build-arg QEMU_IMAGE=calico/go-build:v0.40 -- build-arg GIT_VERSION=-f ./Dockerfile.amd64将构建上下文发送到Docker 守护进程66.3MBStep 1/41 : ARG ARCH=x86_64Step 2/41 : ARG GIT_VERSION=unknownStep 3/41 : ARG IPTABLES_VER=1.8。2-16 步骤4/41 : ARG RUNIT_VER=2.1.2 步骤5/41 : ARG BIRD_IMAGE=calico/bird:最新步骤6/41 : FROM calico/bpftool:v5.3-amd64 as bpftool.步骤12/41 : ARG CENTOS_MIRROR_ BASE_URL=33 35 9 镜子。 aliyun.com/centos -Vault/8.1.1911 --- 使用缓存--- a96f716928d7.步骤17/41 : RUN mv /etc/yum.repos.d /etc/yum.repo .d-bk mkdir - p /etc/yum .repos.d mv /centos.repo /etc/yum.repos.d yum clean all yum makecache dnf install -y 'dnf-command(config-manager)' yum install - y rpm-build yum- utils make yum install -y wget glibc-static gcc yum -y update-minimal --security --sec-severity=Critical --sec-severity=Critical --- 使用缓存--- a9ffd418a7a4 .步骤24/41 : 来自registry.access .redhat.com/ubi8/ubi-minimal:8.1-4078.1-407: ubi8/ubi-minimalDigest: sha256:01b8fb7b3ad16a575651a4e007e8f4d95b68f727b3a4 1f c57996be9a790 dc 从registry.access.redhat.com/ubi8/拉取4faStatus:镜像最新版本的ubi- minimal:8.1-407 -- - 6ce38bb5210c .步骤39/41 : 复制dist/bin/calico-node-amd64 /bin/calico-node --- 使用缓存--- 916fbf133fb0 步骤40/41 : 复制-- from=bpftool /bpftool /bin - -- 使用缓存--- f797db5c4eb4Step 41/41 : CMD ['start_runit'] --- 使用缓存--- fe6496ded4a6[警告] 1 未消耗多个构建参数[QEMU_IMAGE] fe6496ded4a6 已成功标记calico/node:latest-amd64touch .calico_node .created-amd64make: 目录“/home/go/gopath/src/github.com/projectcalico/node”已终止。显示编译后的图像。
[root@node01 github.com]# docker imageREPOSITORY TAG IMAGE IDCREATED SIZEcalico/nodelatest-amd64 77f4ca933207 7 小时前264MB 420e5252b060 7 小时前633MB 参考文献https://github.com/projectcalico/calico/blob/master/DEVELOPER_GUIDE.m d33 35 9github.com/项目calico /go-build/blob/7a75e06f7e9b39df8697ca96f6d5f42369155902/Makefile.commonhttps://mirrors.aliyun.com/centos-vault/8.1.1911/








