docker安装的Rancher无法拉取rancher/shell:v0.3.0镜像

Rancher Server 设置

  • Rancher 版本:2.10
  • 安装选项 (Docker install/Helm Chart): Docker
  • 在线或离线部署:docker一键部署

用户信息

  • 登录用户的角色是什么?
    admin

主机操作系统:
centsos7.4

问题描述:
在系统上安装docker,并且配置了国内镜像源,然后一键安装rancher,rancher启动后显示一直无法拉取。

尝试1:我通过docker pull 拉取镜像到服务器后,rancher没有使用本地镜像还是去远程拉取了
尝试2:我在全局设置,将国内镜像源的地址配置后,rancher还是无法拉取镜像

请问要怎么配置镜像地址



启动 rancher 的命令是什么?

官网提供的命令一键安装,完成后自己就启动了
sudo docker run --privileged -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:stable

参考:如何使用国内资源安装 Rancher

根据这篇文章单节点安装方式重新安装的 添加了 CATTLE_SYSTEM_DEFAULT_REGISTRY也是不行

sudo docker run --privileged -d --restart=unless-stopped -e CATTLE_SYSTEM_DEFAULT_REGISTRY=docker.eeeu.eu -p 80:80 -p 443:443 --name rancher rancher/rancher:stable

日志提示的很明显啊,授权失败,我也不知道你的镜像仓库是什么类型的,帮不上你了

如果我的服务器设置翻墙,通过docker安装的rancher这样可以正确拉取了吗?

可以,但是你需要在 rancher 容器中设置http proxy 的环境变量,因为通过 docker run 启动的 rancher,容器中内置了一个 K3s,容器都是通过这个 K3s 来启动的,这个 K3s 和 宿主机的 docker 是隔离的。

你好,我部署了私有Harbor镜像服务,根据你发布的文章使用: 私有仓库不使用 SSL(使用 http),有认证

单节点 Rancher Server 连接私有仓库

创建了私有镜像配置文件
/workspace/rancher/registries.yaml

mirrors:
  175.178.110.16:
    endpoint:
      - "http://175.178.110.16:1000"
configs:
  "175.178.110.16:1000":
    auth:
      username: admin
      password: Harbor12345

然后 创建容器

sudo docker run --name rancher \
--privileged -d --restart=unless-stopped \
-p 80:80 -p 443:443 \
-e CATTLE_SYSTEM_DEFAULT_REGISTRY=175.178.110.16:1000/library \
-v /workspace/rancher/registries.yaml:/etc/rancher/k3s/registries.yaml \
rancher/rancher:stable

镜像库内容从从k3s/scripts/airgap/image-list.txt at master · k3s-io/k3s · GitHub
获取需要的镜像列表,然后推送到私有仓库

docker.io/rancher/klipper-helm:v0.9.3-build20241008
docker.io/rancher/klipper-lb:v0.4.9
docker.io/rancher/local-path-provisioner:v0.0.30
docker.io/rancher/mirrored-coredns-coredns:1.11.3
docker.io/rancher/mirrored-library-busybox:1.36.1
docker.io/rancher/mirrored-library-traefik:2.11.10
docker.io/rancher/mirrored-metrics-server:v0.7.2
docker.io/rancher/mirrored-pause:3.6

我本地可以直接 docker pull 175.178.110.16:1000/library/rancher/shell:v0.3.0成功,
但是rancher容器启动后拉取镜像还是走的https

环境变量改成:CATTLE_SYSTEM_DEFAULT_REGISTRY=175.178.110.16

我试过最开始设置 环境变量设置为:CATTLE_SYSTEM_DEFAULT_REGISTRY=175.178.110.16

 docker pull 175.178.110.16:1000/rancher/shell:v0.3.0

这样本地都拉不到代码,不存在。

你试下再说

环境变量改成:下面两种都不行

CATTLE_SYSTEM_DEFAULT_REGISTRY=175.178.110.16
CATTLE_SYSTEM_DEFAULT_REGISTRY=175.178.110.16/library


试过registries.yaml里面 endpoint的地址换成http://175.178.110.16:1000/library也不行

mirrors:
  175.178.110.16:
    endpoint:
      - "http://175.178.110.16:1000/library"

我在我环境没重现,参考如下:

root@ksd:~# cat /workspace/rancher/registries.yaml
mirrors:
  10.201.170.187:
    endpoint:
      - "http://10.201.170.187:80"
configs:
  "10.201.170.187:80":
    auth:
      username: admin
      password: Harbor12345
root@ksd:~# sudo docker run --name rancher \
--privileged -d --restart=unless-stopped \
-p 80:80 -p 443:443 \
-e CATTLE_SYSTEM_DEFAULT_REGISTRY=10.201.170.187 \
-v /workspace/rancher/registries.yaml:/etc/rancher/k3s/registries.yaml \
rancher/rancher:v2.10.0
cfd9a1b51f68fc9da7b98a7edb3be5b119f02e9e7e7aebd96fa2dc27fe6c70fa

root@ksd:~# docker exec -it cf bash
bash-4.4# kubectl get pods -A
NAMESPACE                         NAME                                         READY   STATUS             RESTARTS   AGE
cattle-fleet-system               fleet-controller-c69d9f887-4jw4l             0/3     ImagePullBackOff   0          4m1s
cattle-fleet-system               gitjob-79769c5f85-cwzkf                      0/1     ImagePullBackOff   0          4m1s
cattle-provisioning-capi-system   capi-controller-manager-6b55946558-9dbkb     0/1     ErrImagePull       0          53s
cattle-system                     helm-operation-7ggsq                         2/2     Running            0          118s
cattle-system                     helm-operation-hk9z4                         2/2     Running            0          4m10s
cattle-system                     helm-operation-ltd6r                         0/2     Completed          0          3m7s
cattle-system                     helm-operation-mwqww                         2/2     Running            0          3m
cattle-system                     helm-operation-vbmz6                         2/2     Running            0          55s
cattle-system                     rancher-webhook-6fbf78cd68-r6rls             0/1     ImagePullBackOff   0          2m56s
cattle-system                     system-upgrade-controller-786f7f67c9-rft47   0/1     ErrImagePull       0          115s
kube-system                       coredns-56f6fc8fd7-zlzf2
bash-4.4# crictl images
WARN[0000] image connect using default endpoints: [unix:///run/k3s/containerd/containerd.sock unix:///var/run/dockershim.sock unix:///run/containerd/containerd.sock unix:///run/crio/crio.sock unix:///var/run/cri-dockerd.sock]. As the default settings are now deprecated, you should set the endpoint instead.
IMAGE                                        TAG                 IMAGE ID            SIZE
10.201.170.187/rancher/shell                 v0.3.0              7d88049a48ac6       99.7MB
docker.io/rancher/mirrored-coredns-coredns   1.11.3              c69fa2e9cbf5f       63.3MB
docker.io/rancher/mirrored-pause             3.6                 6270bb605e12e       686kB

由于我的私有镜像仓库中只有 rancher/shell:v0.3.0 这一个测试镜像,所以有一些 pod 没启动很正常,主要是为了验证 10.201.170.187/rancher/shell:v0.3.0 能不能 pull 下来。

镜像仓库是 http 的,而且 rancher 也配置为私有,和你的环境一样。

了解了,我的所有镜像是放到 library 项目下面的,地址是 /library/rancher/shell
你的是 在/rancher/shell 。

我新建了一个rancher项目,重新推送shell到rancher目录下。

rancher还是拉取不到


我的能拉下来,你仔细看看我的配置吧

感谢大佬幸苦回复了,我把私有仓库和docker镜像全部删掉后重新安装可以了

你好,没有用私有仓库,直接用镜像docker run 搭建的,搭建后内置k3s无法拉取镜像,这个是什么问题呀Failed to create pod sandbox: rpc error: code = Unknown desc = failed to get sandbox image “rancher/mirrored-pause:3.6”: failed to pull image “rancher/mirrored-pause:3.6”: failed to pull and unpack image “docker.io/rancher/mirrored-pause:3.6”: failed to resolve reference “docker.io/rancher/mirrored-pause:3.6”: failed to do request: Head “https://registry-1.docker.io/v2/rancher/mirrored-pause/manifests/3.6”: x509: certificate is valid for *.facebook.com, *.facebook.net, *.fbcdn.net, *.fbsbx.com, *.m.facebook.com, *.messenger.com, *.xx.fbcdn.net, *.xy.fbcdn.net, *.xz.fbcdn.net, facebook.com, messenger.com, not registry-1.docker.io

是因为从 dockerhub 上拉取镜像失败了,网络问题