我的情况
win8 笔记本偶尔玩游戏,但是装Linux双系统可能需要我一天的时间来完成。我的所有业务都只需要在Docker中跑就可以了。而且我笔记本电脑内存够大16g (感谢HUST姜老师)。
准备
开工
- 安装EasyBCD添加ISO引导项文件直接使用CoreOS的livecd image
详细步骤带截图:http://jingyan.baidu.com/article/466506586ed309f549e5f81c.html - 启动CoreOS完成CoreOS安装
更新
只需要给启动用的ISO文件更新即可。
缺点
- 不能持久化(带来的优点,玩坏了,直接重启即可)
- 整个操作系统都在硬盘中生成的文件直接占用硬盘空间(带来的优点,硬盘速度提升非常高)
- 每次开机手动挂载硬盘空间,手动运行整个系统的初始化脚本。
结合优缺点这里建议这套配置给有确定业务的工作来做还可以,如果业务比较多,可能需要优化的点比较多。
配置
- 在硬盘上开一个100g大小的空间,并格式化,参考命令:
mkfs.ext4 /dev/sda2
,然后挂载。如果您不明白如何分区格式化并且挂载,请看考这里。这篇文章可以说是我见过关于初级磁盘管理***的一篇文章了。 - 挂载之后复制文件夹
/var/lib/docker/
到挂载的位置,再软连接回去。(然后docker images就可以持久化放到硬盘里面了重启不会丢失)。参考操作如下:
cp -rf /var/lib/docker /mnt/
rm -rf /var/lib/docker
ln -s /mnt/docker /var/lib/docker
我的初始化文件参考
mkdir /root/.ssh
echo "ssh-rsa xxx..(省略)....xx Li-jianying@lijianyings-MacBook-Pro.local" > /root/.ssh/authorized_keys
rm -rf /var/lib/docker
ln -s /mnt/docker /var/lib/docker
#echo 'DOCKER_OPTS="--registry-mirror=http://XXXXX.m.daocloud.io"' >> /run/flannel_docker_opts.env
#systemctl daemon-reload
systemctl restart docker
# using disk
先导入rsakey,然后软连接到docker位置。
添加daocloud 加速(官方虽然没写CoreOS怎么加速,但是有大神给出了方法),因为我不加速比加速快,所以这里就先注释掉。作为备选方案。
systemd遇到的坑
如果docker中返回错误-1容器就会挂掉。但是systemd中还存在scope。
当启动问题容器会提示
Error response from daemon: Cannot start container test: [8] System error: Unit docker-e10eb86807cd9971fc03a8eee732771193d506ed2ba678fdf4292916a9fb072c.scope already exists.
那么
systemctl stop docker-e10eb86807cd9971fc03a8eee732771193d506ed2ba678fdf4292916a9fb072c.scope
就可以搞定。
CoreOS.iso 遇到的坑2
不断确认KnowHosts。
参考解决 https://github.com/lijianying10/FixLinux/blob/master/note/取消sshPublicKeyKnowHost认证.md
总结
用这种方法在PC中部署Linux实在是太方便了。熟悉Docker一套的这种想法可能20分钟就可以根据自己的情况搞定。
我找到了这个思路之后经过各种权衡。
- 为了快速解决引导问题,用EasyBCD直接引导内存ISO启动,换折腾UEFI Grub的问题。
- 为了减少配置环境带来的时间成本从普通安装到硬盘里面的发型版本,换CoreOS。
- 为了避免错误操作Or版本升级给系统带来的不稳定因素,换 Docker。
- 在未来也许换 RKT,RunC(希望大婶们快点填坑,RunC说这个月Release不知道会不会跳票)。
- 注意本方案是不惜一切代价用最简洁的环境配置来换开发时间。***主义喜欢折腾的小伙伴可能要绕行了。