无法拉取docker镜像

在国内下载 Docker 镜像会遇到访问 Docker Hub 缓慢或连接超时等问题。以下是几种常见的解决方案,帮助您通过国内镜像源加速 Docker 镜像的拉取

具体配置步骤

在国内下载 Docker 镜像可能会遇到访问 Docker Hub 缓慢或连接超时等问题。以下是几种常见的解决方案,帮助您通过国内镜像源加速 Docker 镜像下载:

1. 配置国内镜像加速器

Docker 提供了多家国内镜像加速器服务商,可以在 Docker 的配置文件 /etc/docker/daemon.json 中添加镜像源,格式如下:

{
  "registry-mirrors": [
    "https://registry.docker-cn.com",   // Docker 官方中国区镜像
    "https://docker.mirrors.ustc.edu.cn", // 中国科学技术大学
    "https://hub-mirror.c.163.com",     // 网易云
    "https://mirror.baidubce.com",      // 百度云
    "https://repo.huaweicloud.com"      // 华为云
  ],
  "dns": ["8.8.8.8", "8.8.4.4"]          // 可选的 DNS 配置
}

配置后,重启 Docker 服务以使更改生效:

sudo systemctl restart docker

2. 在 docker-compose.yml 中指定国内镜像

有时 Docker Compose 可能不使用加速器设置,可以在 docker-compose.yml 文件中手动指定国内镜像地址,例如:

version: '3.7'

services:
  prometheus:
    image: registry.cn-hangzhou.aliyuncs.com/prometheus/prometheus:v2.35.0  # 指定具体版本
    container_name: prometheus
    ports:
      - "9090:9090"

  grafana:
    image: registry.cn-hangzhou.aliyuncs.com/grafana/grafana:9.1.5
    container_name: grafana
    ports:
      - "3000:3000"
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin

这将直接从阿里云镜像仓库下载特定的 Prometheus 和 Grafana 版本。

3. 手动拉取并缓存镜像

可以手动从国内源拉取镜像,然后在 Docker Compose 中使用本地缓存的镜像:

docker pull registry.cn-hangzhou.aliyuncs.com/prometheus/prometheus:v2.35.0
docker pull registry.cn-hangzhou.aliyuncs.com/grafana/grafana:9.1.5

然后在 docker-compose.yml 中指定本地镜像:

services:
  prometheus:
    image: prom/prometheus:v2.35.0
  grafana:
    image: grafana/grafana:9.1.5

4. 检查网络和防火墙配置

确保服务器在公网环境中,防火墙或网络策略不会限制对外访问。可以尝试使用 VPN 或移动热点连接测试是否是网络问题。

5. 清理缓存和重启 Docker

最后,清理 Docker 缓存可以防止之前的拉取失败影响后续操作:

docker system prune -a
sudo systemctl restart docker

当然配置时遇到的问题也是有的,下面总结了的问题

配置遇到docker重启失败

报错
systemctl restart docker
Job for docker.service failed because the control process exited with error code.
See “systemctl status docker.service” and “journalctl -xeu docker.service” for details.
systemctl restart docker 报错,说明 Docker 服务未成功重启。可以通过以下步骤进一步排查原因:

1. 查看 Docker 服务状态

使用以下命令查看 Docker 服务的详细状态,检查具体的错误信息:

systemctl status docker.service

2. 检查日志信息

查看详细日志,以了解失败的具体原因:

journalctl -xeu docker.service

日志中可能会有详细的错误描述,例如配置文件语法错误、缺少依赖模块、存储驱动问题等。

3. 检查 /etc/docker/daemon.json 配置文件

如果 /etc/docker/daemon.json 配置有误也会导致 Docker 无法启动。请确保 JSON 文件内容格式正确,特别是注意逗号和括号等符号的正确使用。

可以使用以下命令检查 JSON 格式是否正确:

cat /etc/docker/daemon.json | python -m json.tool

若格式无误,则不会有错误输出,否则会提示格式错误。

4. 清理 Docker 配置缓存

有时 Docker 的配置文件或缓存可能会损坏,可以尝试清理:

rm -rf /var/lib/docker
rm -rf /etc/docker

然后重建配置并重新启动 Docker:

sudo systemctl start docker

5. 重启系统

如果上述方法仍未解决问题,可以尝试重启服务器,以确保所有相关进程和配置能够重新加载:

sudo reboot

常见错误原因

  • 配置文件错误daemon.json 格式不正确。
  • 存储驱动问题:Docker 依赖的存储驱动无法正确加载。
  • 依赖模块缺失:Docker 所需的模块或服务没有安装完整。

如果依然有问题可以检查 systemctl status docker.servicejournalctl -xeu docker.service 的输出,根据详细信息进一步排查原因

更改镜像源文件提示只读,并且保存不了

在这里插入图片描述
使用sudo tee命令直接写入到目标文件,前提是文件是存在的

  1. 先创建 /etc/docker 目录:

    sudo mkdir -p /etc/docker
    
  2. 然后使用 sudo tee 命令来创建和写入 daemon.json 文件:

    sudo tee /etc/docker/daemon.json <<EOF
    {
      "registry-mirrors": [
        "https://registry.docker-cn.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://hub-mirror.c.163.com",
        "https://mirror.baidubce.com",
        "https://repo.huaweicloud.com"
      ],
      "dns": ["8.8.8.8", "8.8.4.4"]
    }
    EOF
    
  3. 完成后,重启 Docker 服务以应用更改:

    sudo systemctl restart docker
    

这样应该可以成功创建并保存配置文件。

使用docker-compose拉取不了镜像
直接系统上安装prometheus和grafana

不使用 Docker,直接在主机上安装和配置 Grafana 和 Prometheus。这些步骤可能会有所不同,具体取决于您所使用的操作系统。我将以 CentOS 8 和 Ubuntu 为例,提供一个通用的安装方法。

1. 安装 Prometheus

Prometheus 是一个开源的系统监控和报警工具,您可以直接在主机上运行。

在 CentOS / Ubuntu 上安装 Prometheus
  1. 下载 Prometheus 的最新版本:

    使用以下命令到 Prometheus 官方下载页面选择最新版本

wget https://github.com/prometheus/prometheus/releases/download/v2.55.1/prometheus-2.55.1.linux-amd64.tar.gz

  1. 解压文件:

    tar -xvf prometheus-*.linux-amd64.tar.gz
    cd prometheus-*.linux-amd64
    
  2. 移动二进制文件到 /usr/local/bin

    sudo mv prometheus /usr/local/bin/
    sudo mv promtool /usr/local/bin/
    
  3. 创建配置和数据目录:

    sudo mkdir -p /etc/prometheus /var/lib/prometheus
    sudo mv consoles/ console_libraries/ /etc/prometheus/
    sudo mv prometheus.yml /etc/prometheus/
    
  4. 创建 Prometheus 用户:

    sudo useradd --no-create-home --shell /bin/false prometheus
    
  5. 设置权限:

    sudo chown -R prometheus:prometheus /etc/prometheus /var/lib/prometheus
    sudo chown prometheus:prometheus /usr/local/bin/prometheus /usr/local/bin/promtool
    
  6. 配置 systemd 服务文件:

    sudo vim /etc/systemd/system/prometheus.service
    

    添加以下内容:

    [Unit]
    Description=Prometheus
    Wants=network-online.target
    After=network-online.target
    
    [Service]
    User=prometheus
    Group=prometheus
    Type=simple
    ExecStart=/usr/local/bin/prometheus \
      --config.file=/etc/prometheus/prometheus.yml \
      --storage.tsdb.path=/var/lib/prometheus/ \
      --web.console.templates=/etc/prometheus/consoles \
      --web.console.libraries=/etc/prometheus/console_libraries
    
    [Install]
    WantedBy=multi-user.target
    
  7. 启动并启用 Prometheus:

    sudo systemctl daemon-reload
    sudo systemctl start prometheus
    sudo systemctl enable prometheus
    

Prometheus 默认运行在 http://localhost:9090

2. 安装 Grafana

Grafana 是一个开源的数据可视化和监控平台,可以在主机上安装。

在 CentOS / Ubuntu 上安装 Grafana
  1. 添加 Grafana 仓库并安装:

    # For Ubuntu
    sudo apt-get install -y software-properties-common
    sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
    wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
    sudo apt-get update
    sudo apt-get install grafana
    
    # For CentOS/RHEL 7
    sudo tee /etc/yum.repos.d/grafana.repo <<-EOF
    [grafana]
    name=grafana
    baseurl=https://packages.grafana.com/oss/rpm
    repo_gpgcheck=1
    enabled=1
    gpgcheck=1
    gpgkey=https://packages.grafana.com/gpg.key
    EOF
    
    sudo yum install grafana
    
  2. 启动并启用 Grafana:

    sudo systemctl start grafana-server
    sudo systemctl enable grafana-server
    
  3. 配置防火墙(如果有必要):

    sudo firewall-cmd --add-port=3000/tcp --permanent
    sudo firewall-cmd --reload
    

Grafana 默认在 http://localhost:3000 上运行,默认用户名和密码为 admin

3. 将 Prometheus 添加到 Grafana

  1. 登录到 Grafana Web UI。
  2. 在 Grafana 界面中,转到 Configuration > Data Sources
  3. 选择 Add data source,选择 Prometheus
  4. URL 中输入 http://localhost:9090
  5. 点击 Save & Test,确保 Grafana 能够连接到 Prometheus。

完成以上步骤后,您就可以在 Grafana 中创建基于 Prometheus 数据源的仪表板。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐