欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

将一台服务器上的环境通过docker转换到另一台服务器

程序员文章站 2022-07-05 11:38:44
...

为了方便管理和维护,一般在配置服务器的时候都会将环境搭建到docker容器中方便测试和维护
但我的服务器到期了,所有现在要转移所有环境到新的(更便宜的)服务器上
虽然我知道还有个东西叫做docker私有仓库,但穷限制了我的想象力。。。
第一步

docker ps

查看所有容器
将一台服务器上的环境通过docker转换到另一台服务器
第二步
查看所有镜像

docker images

将一台服务器上的环境通过docker转换到另一台服务器
第三步
将需要转移的容器保存为镜像

docker commit 容器名称 镜像名称

将一台服务器上的环境通过docker转换到另一台服务器
有多个就操作多次
将一台服务器上的环境通过docker转换到另一台服务器
第四步
使用docker save命令可以将已有镜像保存为tar 文件。

docker save –o 文件名.tar 镜像名

有多个就保存多次
将一台服务器上的环境通过docker转换到另一台服务器
第五步
就是通过文件传输工具把所有的tar文件都转到新的服务器上
最后还需要转过去的还有docker-compose.yml文件(如果你安装了docker-compose)
将一台服务器上的环境通过docker转换到另一台服务器

第六步
传输tar包完成后,执行命令加载tar包和运行镜像

# 加载恢复镜像
docker load -i 镜像名.tar

将一台服务器上的环境通过docker转换到另一台服务器

加载完成后如果有docker compose.yml文件的,直接用文件启动容器即可
没有的手动启动(要和之前创建容器的配置一样)
例如:

# 在镜像恢复之后,基于该镜像再次创建启动容器
docker run -di --name=nginx -p 80:80 nginx

所以在创建docker的时候,一定要创建一个docker-compose.yml文件
方便后期操作(如果你和我一样因为没钱要转移服务器的话。。。。)

最后一步

如果有镜像在原来的服务器上创建容器时添加了映射路径,那就要把映射文件一起复制过去
不然在把镜像传送过去后创建容器会发现,容器虽然转移过来了,但是文件没有转移过来
将一台服务器上的环境通过docker转换到另一台服务器
将一台服务器上的环境通过docker转换到另一台服务器
这是因为宿主机与容器做了路径映射,再commit一个新的镜像时,该路径下的所有数据都会被抛弃,不会被保存到新镜像中
可以使用命令验证容器是否做了路径映射

docker inspect --format=’{{.Mounts}}’ 镜像名

将一台服务器上的环境通过docker转换到另一台服务器

值得注意的时,这里的MySQL,elasticsearch,redis比较特殊,创建容器时我并没有做路径映射,但是docker自动做了这些操作
将一台服务器上的环境通过docker转换到另一台服务器
对于进行了路径映射的容器,用上面的命令找到对应的路径,然后再把文件全部复制到新服务器上对应的文件路径去就可以了,配置好的路径转移过去了也不会变化

但是MySQL,elasticsearch,redis则需要在转移到新的服务器上时,由于时系统自动配置的,所以路径名称也是随机生成的,还需要先查看系统自动映射的文件路径在复制
将一台服务器上的环境通过docker转换到另一台服务器
找到新服务器上的路径,然后将原服务器上的文件全转过来
将一台服务器上的环境通过docker转换到另一台服务器
进入MySQL容器检查
将一台服务器上的环境通过docker转换到另一台服务器
但有些时候将镜像转移过去后可能由于系统不同的原因不会自动创建路径映射
所有最保险的方法就是在新服务器创建容器时手动添加配置路径映射,获取在docker-compose.yml里配置
具体配置明天写
这里就不测试了,太晚了,睡了,晚安

上一篇: 加密与编码

下一篇: U8 OpenApi调用