这是一种最简单的解决办法,但是需要你有自己的设备可以拉取镜像,并且能ftp连接到你要运行docker的环境。
比如你要在某环境直接运行下面这样的docker命令
docker run -d -p 3000:3000 \ -e OPENAI_API_KEY=sk-xxxx \ -e CODE=your-password \ yidadaa/chatgpt-next-web
那我们大可以在自己的电脑上先 docker pull yidadaa/chatgpt-next-web
先把这个镜像拉下来,然后执行下面的命令
docker save -o [镜像文件名称.tar] [镜像的名称] # 比如这里应该是 docker save -o chatgptnext.tar yidadaa/chatgpt-next-web
然后接下来我们ftp连接到目标服务器,先把刚才生成的文件拖到服务器里,执行下列命令
docker load -i [刚才拖上来的文件的路径] # 比如这里应该是 docker load -i chatgptnext.tar
这时候我们就发现了,这时候镜像已经导入到无法连接docker的服务器了,可以通过 docker images
查看。那么接下来我们可以再次执行 docker run
命令来运行了。
这种情况对目标服务器是内网服务器同样适用,以及如果我们是用docker-compose.yml 启动docker的,也是同理,一个个load镜像即可,多次使用可以写个sh脚本
前提:拥有一个自己的域名,不贵,便宜的几块钱一年。相比方法一都是一劳永逸的
首先本方法,教的是如何自己搭建docker镜像地址,但我们当然可以白嫖别人搭建好的。比如我这里有一个1panel面板提供的加速地址,应该长期可用, https://docker.1panel.live
。如果不可用或者变动了,可以去官网的这里查看 👉 1panel官方加速域名
然后我们就可以略过下面所有的步骤,来到本方法最后一小步的 最终配置步骤,把这个地址填进去即可
下面的步骤没有一张图,如果实在想看图,可以直接移步去看这个博文 👉 https://www.wanpeng.life/2953.html,建议结合着看,但本教程部分解释更加详细
首先都是要注册cloudflare账号,cloudflare是一个国外的著名cdn提供商,非常之nb,提供了大量的免费服务,我们今天就要用到它的cloudflare worker功能 👉 https://dash.cloudflare.com/sign-up
其实也不一定要有域名,只是说我们如果用了它的免费域名,那个域名很可能是被墙或者污染的,结果还是访问不通
那么首先添加域名,去腾讯云或者阿里云或者国外的namecheap,godaddy之类的平台买一个域名,然后打开cloudflare,点击 网站 - 添加站点,然后按照它的指示一步步修改dns,最后就可以把这个域名托管到cloudflare了。如果想用自定义域名的cloudflare worker,必须要把域名托管到cloudflare
添加完后可能需要数小时的等待,然后我们来配置 cloudflare worker。点击侧边栏的 Workers 和 Pages
,点击创建,然后点击创建worker,我们可以修改名字,但是此时我们是无法修改代码的,先点击部署
找到我们刚才创建的worker,点击编辑代码,把worker.js的代码删光,替换为 https://gitee.com/ccschan/CF-Workers-docker.io/blob/main/_worker.js 里的代码,
注意这里一定要修改第八行或者说 let workers_url = 'https://你的域名'
这里的定义,把你的域名这几个字修改为自己的域名的子域名,然后点部署按钮,可能要多按几次。这里的子域名是指你要分配给这个服务,自己自定义的一个域名。比如我这里想设置为 docker.caibi.me
回到上一页,选择设置-自定义域,然后按照要求选择一个子域名给worker,和上一行的需要保持一致,我这里即 docker.caibi.me
,请自行替换为自己的。此时我们cloudflare上的准备已经全部完成了
此时我们打开我们的目标服务器或者环境,以debian系统为例(其他系统可以自行搜索怎么配置 docker镜像地址),注意把下面的 https://docker.1panel.live
替换为自己搭建的或者最上面所说的公开镜像地址,要有http/https的前缀!
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://docker.1panel.live"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
此时镜像应该是可以拉取的了,大功告成,一切如常的使用docker即可
此方法需要一台能直接访问docker的服务器,同时对服务器的流量和空间有一定的需求,如果要问比起方法二有什么优点,那就是毕竟cloudflare worker是别人的免费服务,稳定性和限额上有一定限制,但是也是成本最低的方法了。
本方法适用于对稳定性和速度(如果网速够)有极高要求的。
摆了,直接看别人的教程吧 👉 https://www.wanpeng.life/2826.html