Docker的镜像迁移到另一台服务器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker的镜像迁移到另一台服务器相关的知识,希望对你有一定的参考价值。

参考技术A 1.找到你想移动的 Docker 容器的 ID

docker ps -a 

2.提交你的变更,并且把容器保存成镜像,命名为 redis。

docker commit a1a303886ef4  redis(变更好名字)

3.把 redis 镜像保存成 tar 文件

docker save redis > /app/redis.tar

​4.拷贝到新的机器,执行load命令

docker load < /app/redis.tar

5.docker  exec  -it  容器ID   /bin/bash 启动打包的容器

Docker迁移学习及其他

起因:

有在一台服务器A上通过docker搭建git服务,由于某些原因需要将其迁移到另一台服务器B

过程:

最终采用方式:

 首先通过docker ps(-a) 查看目标容器,然后通过commit命令将其提价为一个镜像,通过save命令将镜像转换为文件,将该文件从A上转移到B上,B上需要已经安装docker,通过load命令将文件转换为镜像,然后通过run启动镜像即可。

用到的命令有:

docker ps

docker commit -m "提交信息" -a "指定作者"

docker save  -o 【保存文件名字 】 【待保存的镜像】

在另一台服务器上

docker load -i 【保存文件名字】

然后就可以通过run命令启动了。

经验教训总结:

1,最开始用的export,结果目标机器上无法启动。搜索了解到export作用是持久化容器,save是持久化镜像,save保存的数据会更完整一些。

参考:https://www.cnblogs.com/shynshyn/p/7917468.html

2,先做的是从服务器A上通过ftp下载到本地,然后上传到服务器B上,但是对上传下载限速不一样,B的上传速度远远大于下载速度,第一次export失败后,第二次save出来的tar文件直接在B上sftp通过ftp命令获得,

需要设定当前目录,通过ftp get即可

sftp [目标服务器ip]

输入密码

lcd [存储目录]

ftp get [文件名字]

即可。

3,忘记了之前容器启动的命令,不记得当初怎么启动起来的了,搜到说通过docker inspect能够查看到,不过不够直观, 最好能够直接记录下来,在需要的时候直接查询复制。

docker run -idt  --name="指定名字" -p [外部端口]:[内部端口]   [镜像名字] [启动命令]

4,docker attache 【dockerid】进入docker内部,退出的时候通过ctrl+p ctrl+q,可以让容器继续跑。

结果:

 可以在B上直接访问,所有账户数据等和在A上一样。

如果设置域名访问,只需要修改域名指向即可,对于使用完全没有区别。

其他:

 1,大半个月前做的git服务器迁移,今天需要重新制作whatsns,结果之前做的记录没了,记性差,只能重新搜索尝试在做了一遍。之前完成后就想着写个博客记录下,拖延症到了现在, 而且做的记录丢了,不考虑隐私等问题,网络上的可靠性远远大于自己保存的数据,以后临时笔记可以考虑通过有道云笔记记录,每隔一段时间整理一下,可以公开的东西保存到博客上。

2,whatsns,一个开源的问答系统,有开源版和收费版、商业版,对于个人记录一些知识来说,开源版挺好用的。之前已经有在一个docker上运行跑起来,现在需要另一个docker来做其他用途, 类似docker迁移,只不过免去了image-》file-》image的过程。不过第二个docker mysql启动一直失败,一系列尝试后最终参考如下解决问题:

 

mysqld --initialize --user=mysql --basedir=/home/software/mysql --datadir=/home/software/mysql/dat
mysqld_safe --defaults-file=/home/software/mysql/my.cnf 

参考:https://blog.csdn.net/kohang/article/details/80076570

重置mysql后无法登陆,修改whatsns_user下的账户密码即可。

update whatsns_user set password = "XXX where uid="1";

之后可以登录,修改设置,更新缓冲模板等,就可以正常使用了。

application/config/config.php中设置域名,域名直接设为字符串

$yuming="XXX"即可

 

很多东西感觉深入下去都好多内容,还好这个东西对于我来说只是一个工具,所以暂且不求甚解,锤子能用就好了,接下来好好敲钉子。

 

以上是关于Docker的镜像迁移到另一台服务器的主要内容,如果未能解决你的问题,请参考以下文章

Docker+SSH,如何定期将 docker 镜像从一台主机安全地传输到另一台主机?

如何保存所有 Docker 镜像并复制到另一台机器

docker 拷贝镜像文件

如何将网站从一台服务器迁移到另一台服务器

如何将 DolphinDB 集群迁移到另一台机器上

text 将网站安装从一台服务器迁移到另一台服务器