最近经常有朋友问我,用Docker部署服务的时候拉取镜像速度非常慢怎么能够提速。我总结了2招我用到的提速方法,希望对大家有所帮助。
Docker镜像加速
docker 镜像加速已经比较成熟,很多服务商都提供了自己的加速服务,可以直接在linux 上修改 /etc/docker/daemon.json 文件
vim /etc/docker/daemon.json
添加以下配置文件并重启你的 docker
{
"registry-mirrors": [
"https://1nj0zren.mirror.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn",
"http://f1361db2.m.daocloud.io",
"https://registry.docker-cn.com"
]
}
命令行执行docker info,如果从结果中看到了上面配置的地址,说明配置成功。
大家也可以执行下面的一键脚本进行操作。
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://1nj0zren.mirror.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn",
"http://f1361db2.m.daocloud.io",
"https://registry.docker-cn.com"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
使用重新打 tag 的方式,拉取镜像
以上操作后可以加快你摘取 docker.io 镜像的速度,对于非docker.io镜像是无效的,比如微软的mr.microsoft.com 这种 镜像并起不到加速的效果,所以你可以先把国外的镜像同步到 docker.io。
有一台国外的服务器 ,在你的服务器中拉取国外的镜像,之后 push 到 docker.io 利用 github.com 的 travis : 你可以建一个仓库,在里面添加 .travis.yml 之后把操作命令写在里面 travis-ci 官方文档[1]
这里我用的是我本地的电脑,以Asp.Net Core 3.1作为示例,先拉取相关镜像
docker pull mcr.microsoft.com/dotnet/core/sdk:3.1-buster
docker pull mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim
执行成功之后,用docker login 登录腾讯云(因为我的服务部署在腾讯云上,用腾讯云更快)
#登录registry的用户名是您的腾讯云的账号ID,密码是您开通镜像仓库服务时设置的密码
sudo docker login --username=[ID] --password=[密码] ccr.ccs.tencentyun.com
现在将拉下来的镜像重新打上 tag 便于上传到自己名下的 腾讯云
sudo docker tag mcr.microsoft.com/dotnet/core/sdk:3.1-buster ccr.ccs.tencentyun.com/dotnetplus/sdk:3.1
sudo docker tag mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim ccr.ccs.tencentyun.com/dotnetplus/aspnet:3.1
现在就可以把镜像push上去了
sudo docker push ccr.ccs.tencentyun.com/dotnetplus/sdk:3.1
sudo docker push ccr.ccs.tencentyun.com/dotnetplus/aspnet:3.1
在你需要使用的时候,只要用docker pull拉下来即可
sudo docker pull ccr.ccs.tencentyun.com/dotnetplus/sdk:3.1
sudo docker pull ccr.ccs.tencentyun.com/dotnetplus/aspnet:3.1
有洁癖的同学还可以用docker rmi命令清除没用的镜像。
Comment
取消对该留言的回复