由于某些服务器访问docker-hub速度比较慢甚至无法访问,该教程给出了多个解决方案
方案一
建立代理实现访问需要有代理服务器:具体本教程不提供
注意:需要代理终端流量
方案二(推荐使用)
创建docker-registry
1.安装镜像仓库程序 DockerRegistry
先安装docker和docker-compose
apt install docker-ce
# debian/ubuntu安装docker
yum install docker-ce
# centos安装docker
apt install docker-compose
# debian/ubuntu安装docker-compose #根据使用情况进行升级按Y即可
yum install docker-compose
# centos安装docker-compose
下面两种方式任选:
方法一:如果使用docker run
docker run -d \ -p 5000:5000 \ --name registry \ -v /home/docker/registry:/var/lib/registry \ -e REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io \ --restart always \ registry:2
方法二:如果使用docker-compose(推荐)
先编辑 docker-compose.yml
vim docker-compose.yml
#将下面的docker-compose文件复制到其中
docker-compose up -d
#运行dockker并且更新到当前最新版本
下面是docker-compose.yml源文件
version: '3'
services:
registry:
image: registry:2
container_name: registry
restart: always
ports:
- "5000:5000"
volumes:
- /home/docker/registry:/var/lib/registry
environment:
REGISTRY_PROXY_REMOTEURL: "https://registry-1.docker.io"
查看docker是否运行起来
docker ps
2.反向代理域名
宝塔面板进行反向代理(推荐:适合小白)
1panel面板进行反向代理
手搓nginx配置文件:只需要添加一个反向代理即可
用一个域名配置代理本地的5000端口即可
https://docker.example.com
#例如你的一级域名是exampe.com
#然后你可以添加一个docker二级域名,记得将你的二级域名解析到你的服务器上
#反向代理该域名到你服务器上的5000端口就行
当你打开 https://docker.example.com出现的是白屏说明你的dockerhub镜像加速器已经配置好了
3.开始编辑加速源(核心步骤)
如果你上面的步骤看不懂或者操作有误:可以去网上找下其他人的docker-registry然后替换下面的url即可
创建
sudo mkdir -p /etc/docker
编辑
vim /etc/docker/daemon.json
# 使用vim编辑
nano /etc/docker/daemon.json
# 使用nano编辑
1.输入代码
代码如下
{ "registry-mirrors": ["https://docker.example.com"] }
#里面填写你刚刚配置的反向代理
使用nano编辑
crl+x y 回车 保存退出
使用vim编辑
按i进入编辑模式 然后按下鼠标右键就行粘贴 然后按esc 输入 :wq 回车即可
2.重启docker
systemctl restart docker
#重启docker服务
当然你也可以重启机器 reboot
3.查看docker的加速源信息
docker info
#查看docker的全部信息
最后几行可见我自建的docker镜像加速器
能够看见后面的Registy Mirrors里面是你配置好的内容那么就算完成了
当然修改/etc/docker/daemon.json也可以直接这样:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://docker.example.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
# 注意上面填写你刚刚搭建好的docker服务器地址
4.测试拉取镜像
docker pull mysql
#看看加速效果吧~
方案三:临时方案
使用大厂免费的docker加速器:前面两种方案留作学习使用:
由于中国大陆的相关政策一定会持续很久:且用且珍惜!
结果是在1panel上拉取OpenResty成功啦
腾讯云解决方案
阿里云解决方案
对于使用1panel的用户来说可以直接配置docker加速源(gui界面添加)
方案四
通过可以下载镜像的服务器下载好镜像之后从不能下载的服务器向已下载好的服务器中直接拉取就行
注意:需要服务器之间可以通信
1.先在可以下载docker的服务器上下载镜像
docker pull hello-world:latest
2.导出镜像
docker save hello-world:latest | gzip > hello.tar.gz
3.放到网站 根目录下,例如 https://example.com/hello.tar.gz
4.导入镜像
wget -q -O - https://example.com/hello.tar.gz | docker load
#下载并且load
也可以使用SFTP下载到本地之后再上传到需要使用的服务器上
5.其他测试命令
docker rmi -f hello-world
#删除下好的docker镜像 rmi即是remove image,前面已经load了那么可以删除了
docker images
#查看镜像
docker run hello-world
#运行镜像 启动容器
注意将源服务器上无用的docker镜像和文件删了