多种 Docker 镜像拉取办理方案与实践

打印 上一主题 下一主题

主题 1035|帖子 1035|积分 3105

最近国内 Docker 镜像拉取不太通畅,实验了几种镜像拉取的方式,写篇博客分享一下。
原以为只是 docker hub 被毙了,上机器一操作,官方的下载地点也被毙了,真是从源头办理标题==。
不外还好目前另有其他源能用,已经有大神把各种源整理成脚本,常用的 Linux 体系可以一个脚本办理。


  • 项目堆栈 LinuxMirrors
  • 利用方法
如何修改镜像堆栈

在 Docker 中,可以修改daemon.json来修改镜像堆栈。
Linux

在 Linux 体系中,Docker 的设置文件通常位于 /etc/docker/daemon.json。
   如果用的是无根用户模式 (rootless mode),设置文件则位于 ~/.config/docker/daemon.json。 固然也可以在启动 Docker 守护进程时,通过 --config-file 标记明白指定设置文件的位置。
  如果你没有添加过设置,就需要在/etc/docker/创建文件daemon.json, 然后通过 registry-mirrors 来指定镜像堆栈。修改完成后,重启服务。示例如下:
  1. sudo mkdir -p /etc/docker
  2. sudo tee /etc/docker/daemon.json <<-'EOF'
  3. {
  4.     "registry-mirrors": [
  5.         "https://docker.m.daocloud.io"
  6.     ]
  7. }
  8. EOF
  9. sudo systemctl daemon-reload
  10. sudo systemctl restart docker
复制代码
群晖

群晖的用户在容器堆栈的设置中就可以加了。

几种办理方案

从网盘下载/淘宝购买

不得不佩服国人的贸易嗅觉,镜像拉取不通畅后,淘宝上立马就出现了相关的服务。给人远程拉镜像 或 把镜像放到百度网盘等卖。。
这一类是非常不建议去利用的,一方面镜像可以很轻易的被修改,安全隐患大;另一方面确实没须要。
利用代理

如果自己会搭梯子,或者有买梯子的同学,就不用折腾了,直接利用全局代理或者给 Docker 服务设置代理即可。
下面是单独给 Docker 服务设置代理的方法。
Liunx

在Linux上,有多种方式给 Docker 设置代理,这里说常用的两种。


  • 一种是直接找到 Docker service 的文件,直接在 [Service] 模块下加入代理设置,如:
  1. # 通过 systemctl status 可以看到 Service 文件目录
  2. $ sudo systemctl status docker
  3. ● docker.service - Docker Application Container Engine
  4.    Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
  5. $ sduo vi /usr/lib/systemd/system/docker.service
  6. # 在 `[Service]` 模块加入配置即可
  7. [Service]
  8. Environment="HTTP_PROXY=http://192.168.10.1:7890" # 换成你的代理地址
  9. Environment="HTTPS_PROXY=http://192.168.10.1:7890" # 换成你的代理地址
  10. Environment="NO_PROXY=localhost,127.0.0.1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,fd00::/8,example.com"  # 不需要走代理的地址。
复制代码


  • 还可以通过systemd的 drop-in 文件来设置HTTP代理, 操作如下:
  1. # 创建 /etc/systemd/system/docker.service.d/http-proxy.conf 文件
  2. $ sudo mkdir -p /etc/systemd/system/docker.service.d/
  3. $ sudo vi /etc/systemd/system/docker.service.d/http-proxy.conf
  4. # 在其中加入下面的内容
  5. [Service]
  6. Environment="HTTP_PROXY=http://192.168.10.1:7890" # 换成你的代理地址
  7. Environment="HTTPS_PROXY=http://192.168.10.1:7890" # 换成你的代理地址
  8. Environment="NO_PROXY=localhost,127.0.0.1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,fd00::/8,example.com" # 不需要走代理的地址。
复制代码
设置好后,重启服务。
  1. $ sudo systemctl daemon-reload
  2. $ sudo systemctl restart docker
  3. # 通过这个命令查看是否配置成功
  4. $ sudo systemctl show --property=Environment docker
  5. Environment=HTTP_PROXY=http://192.168.10.1:7890 HTTPS_PROXY=http://192.168.10.1:7890 ....
复制代码
群晖

群晖体系就是基于Linux改的,找到服务的位置,和Linux一样的修改即可。
开启SSH,SSH登录后获取root权限,然后修改下面的文件以及在[Service]下面添加代理内容。添加完成后重启 docker/ContainerManager 服务。


  • 群晖 7.2 以前
  1. $ vi /usr/local/lib/systemd/system/pkg-Docker-dockerd.service
  2. [Service]
  3. Environment="HTTP_PROXY=http://192.168.10.1:7890" # 换成你的代理地址
  4. Environment="HTTPS_PROXY=http://192.168.10.1:7890" # 换成你的代理地址
  5. Environment="NO_PROXY=localhost,127.0.0.1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,fd00::/8,example.com" # 不需要走代理的地址。
复制代码


  • 群晖 7.2 及以后
  1. $ vi /usr/local/lib/systemd/system/pkg-ContainerManager-dockerd.service
  2. [Service]
  3. Environment="HTTP_PROXY=http://192.168.10.1:7890" # 换成你的代理地址
  4. Environment="HTTPS_PROXY=http://192.168.10.1:7890" # 换成你的代理地址
  5. Environment="NO_PROXY=localhost,127.0.0.1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,fd00::/8,example.com" # 不需要走代理的地址。
复制代码
利用镜像服务

目前另有一些第三方提供的,目前还能利用(随时大概被

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用户云卷云舒

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表