Docker迁移学习及其他
Posted youdias
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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"即可
很多东西感觉深入下去都好多内容,还好这个东西对于我来说只是一个工具,所以暂且不求甚解,锤子能用就好了,接下来好好敲钉子。