2024年6月初之后,Docker在整个中国大陆都无法访问,我还写了一篇文章Dokcer国内不能拉取惊讶了一下,因为我的大多数项目都是使用Docker运行的,很多博客内容也都是围绕Docker进行展开的,所以我非常需要Dokcer。
于是我稍稍费了一下时间,在网上找了一下怎么重新拉取Docker,大多数教程都是使用魔法或者是改变服务器Docker的配置文件,但是这个两个对于我来说,都不太行,第一个是不便细说,因为我使用的是阿里云云服务器,一旦使用就会被警告,搞不好还会封禁服务,所以选择放弃,第二个当时是觉得太过麻烦,所以也不想处理。
思来想去,我突然想起我还有两台国外的VPS,正好可以使用Dokcer,然后Docker也支持镜像文件的导入,所以我完全可以用国外的VPS上拉取Docker,然后导出下载,最后再导入国内阿里云的服务器上,简直完美,说干就干。
拉取镜像的操作我这里就不用细说了,直接跳到Docker项目拉取后的,我之前有讲到过,我的VPS安装的是FAST OS DOCKER,这是一个国人制作的Docker监控面板,所以我基本上都是以这个进行操作的,当然网上也有很多SSH命令的教程,我这里也会穿插一下。
如果有安装其他面板的,例如宝塔或者是1Panel,都支持Docker镜像的导入导出,可以根据自己的选择进行操作。
Docker镜像导出
1、FAST OS DOCKER导出
通过账号密码进入FAST OS DOCKER之后,点击镜像,然后选择刚刚拉取的镜像或者是想要拉取的镜像,点击导出。

这里需要等待一段时间,过一段时间后,浏览器会提示需要下载一个XXX.tar的压缩包(XXX为镜像名称),我们点击下载即可,下载好后,就可以在本地文件中查看导出的镜像文件了。

2、SSH命令导出
save命令
docker save -o coredns.tar k8s.gcr.io/coredns:1.3.1
export命令
docker export eb516548c180 > coredns.tar
上面两个任选其一,就可以把指定的Docker导出到服务器了,但是还没有下载到本地,所以还需要SSH工具下载到本地,这里也不赘述了,因为大多数SSH工具都支持。
Docker镜像导入
把下载好后的.tar文件上传到国内的服务器上,上传好之后,我们就可以通过面板进行导入了
1、FAST OS DOCKER导入
FAST OS DOCKER是支持本地系统导入的,所以我直接选择我刚才下载的tar文件的路径,点击提交导入,然后等待一段时间就可以了。

刷新一下页面,就发现已经导出成功了。
2、SSH命令导入
特别注意:
刚才save命令导出的与export命令导出的Docker镜像文件导入不能混用!
如果使用save命令导出的镜像,建议使用load命令
如果是export命令导出的镜像,建议使用import 命令
如果使用import 导入 save 产生的文件,虽然导入不提示错误,但是启动容器时会提示失败,会出现类似"docker: Error response from daemon: Container command not found or does not exist"的错误。
load 命令
docker load < coredns.tar # 相同路径
docker load -i /www/wwwroot/docker/talebooklatest.tar # 指定文件路径
import 命令
docker import /usr/local/coredns.tar
cat coredns.tar | docker import - k8s.gcr.io/coredns:1.3.1(镜像名自己定义)
使用下面命令查看是否导入成功
docker images
创建容器
1、FAST OS DOCKER
打开容器页面,点击创建容器

在页面中输入容器名称和需要创建的Dokcer镜像,点击创建容器即可(其他设置可自行选择)

然后回到容器页面,就会发现刚才创建的容器名称了。
2、SSH命令创建
docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq 80bd4b95a49d
# 其中的参数含义很显然,-p 虚拟机端口:容器端口,是将虚拟机与容器的端口组成映射,当需要有多个端口映射时,就重复多少次。
启动创建的容器
docker start rabbitmq(也可以是相应的容器ID)
可能遇到的问题
1、The container name “/xxxx” is already in use by container
docker ps -a
找到所有的容器,然后删除名称重复的容器
docker rm xxxxxxxxx # xxxxxxxxx是容器的ID
2、端口被占用rror starting userland proxy: listen tcp 0.0.0.0:5672: bind: address already in use
通过如下命令查看端口占用情况
netstat -tanlp
将对应的进程编号杀死即可
sudo kill 7757 # 7757是进程编号
至此,Docker就可以正常的运行及访问了。
Comments 1 条评论
测试QQ登陆并发言
( ̄▽ ̄)