Docker引擎配置和容器镜像加速

2024-06-13 21:18:00
丁国栋
原创 228
摘要:本文介绍如何通过docker的配置文件来对Docker引擎做基础配置。

Docker引擎(提供 docker 命令(区分于 crictl))是一个非常好用的容器工具,可以用来做很多有趣的事情,包括快速测试和构建一致的开发测试环境。

但要想使用好它必须经过一些最基本的配置,可以通过创建并编辑 /etc/docker/daemon.json 文件进行配置。

下面是一个基本的配置。

{
    "live-restore": true,
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "100m",
        "max-file": "3"
    },
    "registry-mirrors": ["https://docker.example.com/"]
}

释义:

live-restore 允许可以重启docker引擎,但不影响运行中的容器;

log-driver 指定容器日志格式为json;

log-opts 里分别使用max-size和max-file指定了日志文件大小和数量;

registry-mirrors 指定了容器镜像的镜像地址;


这样的基本配置就足够了。


因为众所周知的原因,Docker官方的镜像仓库 hub.docker.com 无法访问并拉取镜像,因此我们需要通过网络代理来访问。

参考地址:https://docs.docker.com/config/daemon/proxy/

处理方法:

  1. 打开并编辑文件 /etc/docker/daemon.json
  2. 添加以下内容:
        "proxies": {
            "http-proxy": "socks5://10.8.1.7:3127",
            "https-proxy": "socks5://10.8.1.7:3127",
            "no-proxy": "127.0.0.0/8,ccr.ccs.tencentyun.com"
        }

使用镜像加速(代理服务),例如这个项目:https://github.com/DaoCloud/public-image-mirror/tree/main。

使用方法:


docker run -d -P m.daocloud.io/docker.io/library/nginx
# 或
docker run -d -P m.daocloud.io/library/nginx


添加到 /etc/docker/daemon.json

{
  "registry-mirrors": [
    "https://docker.m.daocloud.io"
  ]
}
一个完整的例子:


# /etc/docker/daemon.json
{
    "live-restore": true,
        "log-driver": "json-file",
        "log-opts": {
            "max-size": "100m",
            "max-file": "3"
        },
        "proxies": {
            "http-proxy": "socks5://10.8.1.7:3127",
            "https-proxy": "socks5://10.8.1.7:3127",
            "no-proxy": "127.0.0.0/8,ccr.ccs.tencentyun.com"
        }
}


另外提供一些Docker容器镜像加速地址。例如 https://docker.credclouds.com/ 感谢 李晓辉 同学。


加速镜像地址 官方镜像地址
docker.credclouds.com registry-1.docker.io
quay.credclouds.com quay.io
gcr.credclouds.com gcr.io
k8s-gcr.credclouds.com k8s.gcr.io
k8s.credclouds.com registry.k8s.io
ghcr.credclouds.com ghcr.io

另外阿里云上的镜像加速服务目前还是可用的,也可以尝试使用。


配置示例:


sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://docker.credclouds.com",
    "https://k8s.credclouds.com",
    "https://quay.credclouds.com",
    "https://gcr.credclouds.com",
    "https://k8s-gcr.credclouds.com",
    "https://ghcr.credclouds.com"
  ]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker.service


发表评论
博客分类