近期 UnitedStack 公有云在国内率先提供了对 CoreOS 的支持,广大玩家可以很轻松地在 UOS 上体验、研究 CoreOS 了。以下是一点经验分享,抛砖引玉,希望能给大家带来些许帮助。

CoreOS 和 docker 简介

关注云计算的同学一定注意到了 docker ,而关注 docker 的朋友,也一定听说过 CoreOS 。它们都是近期很火热的焦点,网上铺天盖地有各式各样的介绍,不再引述,这里仅说一点个人看法。

可以说,CoreOS 是Linux发行版中的一朵奇葩,而 docker 是虚拟化领域的一朵奇葩,二者合在一起,于是我们得到了。。。两朵奇葩。。。哈哈,玩笑。严肃讲,CoreOS 不是以传统模式做的 OS:

1  传统的 Linux 发行版(除了Gentoo这样的奇葩),都有包管理体系、软件包repo,系统安装的过程就是从repo(可以是http/ftp、nfs、iso等)中获取软件包解包安装。而 CoreOS 压根就没有包管理机制,官方直接发布二进制的系统映像,安装方式就是dd。不过映像格式倒是很丰富,ISO、PXE、各大虚拟机、多种云平台一应俱全。

2 分区模式也比较独特,号称有两个root分区,一个用于常规启动,另一个作为更新分区,系统更新将会被安装到更新分区。两个分区可以切换,系统更新后,更新分区会自动变为常规启动分区,重启就会加载新系统。在支持的平台上,使用kexec方式重启,避免漫长的硬件自检过程,仅需数秒即可完成。从实际的分区列表看,具体实现细节要更复杂,精力所限笔者尚未深究,有了解的同学还请不吝赐教,谢谢!

3 CoreOS 设计之初,就没打算让用户以传统的裸进程的方式跑服务,而是全部通过docker来运行应用,CoreOS 就是一个极简的、只跑docker的 Linux 系统。另一方面,docker 也不是要做传统意义的虚拟机(尽管 docker 容器很像虚拟机),其设计理念是“一种新的应用打包/部署/运行/管理方式”。 CoreOS 与 docker 的配合,相当于把传统的混杂在一起的操作系统和应用做了解耦,分成两层,CoreOS 更偏底层,甚至有点像硬件固件,而 docker 负责偏上的应用层。

CoreOS官网主页有一句话,“A new way to think about servers”,个人认为是恰如其分的。如果把CoreOS整体当做一个“内核”,跑在其中的docker容器就有点像一个个的“进程”;如果把 CoreOS 看做一个 hypervisor,那docker容器就像是宿主机中的虚机。而事实上,docker容器既不是进程,也不是虚机。CoreOS+docker,确实可以认为是一种新形态的OS 和服务运行方式。

4 CoreOS 内置了两个服务:etcd 和 fleet。它们都是CoreOS的子项目。etcd是一个高可用的键值存储系统,主要用于共享配置和服务发现,类似于 ZooKeeper 和 Doozer。 fleet是一个分布式的container发布工具,用于进行集群中任务的提交和管理。个人理解,etcd用来自动化构建CoreOS集群,而fleet则是运行于CoreOS集群之上的任务(docker)管理平台。也就是说,CoreOS设计之初,就将运行环境定位于集群&平台。

在UOS上创建CoreOS 云主机

言归正传,以下是在UOS上创建 CoreOS 云主机的操作步骤:

1. 打开UOS控制台,点击“创建云主机”,输入主机名,镜像选择 CoreOS,点击“下一步”。

2. 虚机配置,内存建议2G或更多,因为某些docker任务比较耗内存;

子网,选“基础网络”;

登陆信息,目前只支持秘钥方式,如果没有秘钥,需要先在“密钥对”页面中创建一个。

都选好后,点击“创建”即可。

3. 绑定一个公网IP。 如果没有可用公网IP,需要在“公网IP”页面申请一个公网IP地址:

然后绑定到CoreOS主机

4. SSH登陆

主机:就是刚才绑定的公网IP

方法:Public Key

用户名:core

用户秘钥:选择对应的秘钥

如果是 Mac / Linux,则通过以下命令登陆:

ssh -i online4.pem core@42.62.73.66

如果是Windows,这里以Xshell为例:

点击“确定”保存,双击相应条目即可登录!

体验CoreOS

试验一:跑个docker 试试

1 从docker hub(docker官方提供的映像存储服务)拉取一个基础Linux系统映像:

docker pull base

2 启动一个docker容器,运行交互式shell,分配一个伪终端,附带stdin和stdout:

docker run -i -t base /bin/bash

此时就attach到了刚启动的docker 容器的终端。运行一些命令试试:

我们可以从该容器detach:先按 Ctrl+p,再按Ctrl+q 。此时执行 docker ps 可以看到该容器仍在后台运行:

用docker kill 命令可以停止容器。停掉的容器并没有完全删除,还可以重新起来,而且前面做的改动会被保留:

试验二:运行WordPress

WordPress需要 mysql 数据库,所以先 pull mysql:

docker pull mysql

然后 pull wordpress 映像:

docker pull wordpress

运行 mysql:

docker run --name mysql_1 -e MYSQL_ROOT_PASSWORD=test_test -d mysql

运行 wordpress:

docker run --name wordpress_1 --link mysql_1:mysql -p80:80-d wordpress

参数解释:

--name mysql_1 给docker容器起个名字。

-e MYSQL_ROOT_PASSWORD=test_test 指定mysql的root密码。

-p 80:80 把主机(CoreOS)的80端口映射到docker容器内部的80端口,这样就可以通过“主机ip:80”访问到容器里80端口的服务。

--link mysql_1:mysql 这个参数比较神奇,看起来很简单,但要解释清楚还是有点复杂的。简言之,这个参数把两个docker容器打通了,使它们内部的应用可以很容易地互访。

OK,现在可以访问WordPress了,直接在浏览器地址栏输入前面绑定的公网ip:

稍微深入一点

额,wordpress就这么起来了,大家是不是感觉有点太。。。轻巧了。。。

的确,经过docker封装的应用,用起来很方便,但也把大量细节隐藏了。作为一个惯于寻根究底、不肯放过任何细节的资深&优秀OPer,难以容忍真相被层层包裹在深幕之后。

好吧,我们再往深处探寻一下。

Q1:这两个服务这么不声不响就起来了,也没输出啥信息么? A1:可以通过docker logs 命令查看每个容器的运行日志:

Q2:平时用惯了ssh,假如想登录到某个docker容器内部,该怎么做呢? A2:用nsenter 可以“渗透”进入到运行中的docker容器。

首先,找到容器的***个进程的PID

PID=`docker inspect --format"{{ .State.Pid }}"mysql_1 `

然后渗入(需要root权限)

sudo nsenter --target $PID --mount --uts --ipc --net --pid

如上所示,我们进入了 mysql_1 这个容器。确实太纯净了,只有mysql,连 top、ps 都没有。。。那只好连上mysql看看:

OK,再进入wordpress看看:

其实,这种方式并不是ssh登录,不需要容器内部运行sshd服务。而是用主机的bash进入容器的name space,“附着”到容器上。所以才叫做 ns(name space) enter。

之所以能这么做,是因为每个docker容器中的进程,实际上都是主机(CoreOS)的本地进程,可以通过ps 看到:

有点神奇哈!到这里大家应该能感觉到,上面反复提到的name space,就是神奇的docker魔法的真正谜底。当然还需要aufs、cgroups等技术的支撑,以及开发者们的不懈努力,才最终呈现给大家完整的docker平台。

玩的开心!

参考资料:

CoreOS官网: https://coreos.com/

Docker中文社区: https://www.dockboard.org/

Docker 官网: https://www.docker.com/

https://registry.hub.docker.com/_/mysql/

https://registry.hub.docker.com/_/wordpress/

http://www.oschina.net/translate/enter-docker-container?cmp

http://www.blogjava.net/yongboy/archive/2013/08/26/403325.html

【编辑推荐】

【责任编辑:Ophira TEL:(010)68476606】

点赞 0

coreos mysql_CoreOS 实战:在 UOS上体验CoreOS 操作全记录相关推荐

  1. dropzone拖拽上传组件使用全记录

    原文链接: dropzone拖拽上传组件使用全记录 公司有一个需求是把附件上传优化成可以通过拖拽本地文件来上传的效果,找了一圈都没有找到特别简单好用的组件,最后还是决定使用github上1.6万sta ...

  2. 容器编排技术 -- 在Azure上使用CoreOS和Weave的 Kubernetes

    容器编排技术 -- 在Azure上使用CoreOS和Weave的 Kubernetes 介绍 在本指南中我将演示如何在Azure云端部署Kubernetes集群.您将使用CoreOS与Weave,We ...

  3. K8S实战:Centos7上集群部署

    K8S实战:Centos7上集群部署 更多技术类博文,请关注微信公众号:运维之美. 集群架构 k8s集群的架构 master节点:etcd,api-server,scheduler,controlle ...

  4. uos系统不激活能用吗_国产统一操作系统UOS真的能代替window系统吗? UOS上手体验...

    近一段时间,Win10的更新搞得人心惶惶,新功能没见多少,问题却此起彼伏.常常是一个旧Bug搞定了,又带来一堆新Bug.近日,中兴新支点.深度.中国电子集团.诚迈科技等四家国产操作系统厂商,合力推出了 ...

  5. 君子动手不动口,阿里云喊你做云上体验官啦!

    想要免费搭建云上博客?想要玩转全云端开发?想要挑战AI经典命题?想要7天进阶成为云计算专家?想要初始化你的云原生工程?快来阿里云 Hands-on Labs! Hands-on Labs 是阿里云全新 ...

  6. linux的系统监视器图片_替代Windows还有多远?国产统一操作系统UOS上手体验

    嵌入式linux QQ交流群:175159209,欢迎爱好者加入交流技术问题! 近一段时间,Win10的更新搞得人心惶惶,新功能没见多少,问题却此起彼伏.常常是一个旧Bug搞定了,又带来一堆新Bug. ...

  7. uos系统桌面怎么没有计算机图标,统一操作系统UOS办公体验换源图文教程:尝鲜记(二)...

    原标题:统一操作系统UOS办公体验&换源图文教程:尝鲜记(二) 大家好,欢迎回到IT之家学院,我是麦子.上期我们聊了如何在物理机和虚拟机中 安装统一操作系统UOS ,本期我们将结合deepin ...

  8. Vue+Echarts构建可视化大数据平台实战项目(上)粒子动效,登录界面抖动,背景图轮播★

    Vue+Echarts构建可视化大数据平台实战项目(上) 前言 分享之前我们先来普及一下什么是数据可视化?数据可视化可以把数据从冰冷的数字转换成图形,揭示蕴含在数据中的规律和道理.数据可视化通俗来说就 ...

  9. 视频教程-SharePoint Online 建站实战教程(上)-Office/WPS

    SharePoint Online 建站实战教程(上) 大家好,我是霖雨,从2010年开始致力于SharePoint相关的技术研究,精通SharePoint环境搭建.实施.开发.运维.排错等相关技术, ...

  10. 在 UOS 上玩转安卓 App,像使用手机一样使用电脑

    本文转载自IT之家 IT之家 5 月 6 日消息 用电脑玩手机 App?你没看错,在统信 UOS 上一样玩转手机 App.今天统信官方带来了 UOS 的安卓应用兼容技术介绍. 安卓应用兼容是指将安卓环 ...

最新文章

  1. 【转】NG:垂枝桦基因组图谱构建(2+3组装)及重测序分析
  2. VS2010 无法调试、断点 的解决方法
  3. 【转】Itween 贝塞尔曲线(一)
  4. 计算机成绩统计优秀率,基于决策树算法的成绩优秀率分析与研究.pdf
  5. 一些ASP.NET不能调试问题的解决办法!
  6. mac os和linux和安卓,在我的安卓手机里,安装Windows和macOS系统
  7. Modify HTTP Headers (Examples)
  8. python中的switch语句_python技巧 switch case语句
  9. Docker详解(三)——Docker安装与部署
  10. 成功走职场要找准自己的快捷键
  11. 华科c语言作业,华中科技大学标准c语言程序设计及应用习题答案
  12. 基于ThinkPHP6.0 - 宝塔搭建漫画CMS管理系统源码实测
  13. 扫描二维码后可以自动跳转到网页
  14. floquet端口x极化入射波_hfss和cst电磁媒质色散曲线dispersiondiagram研究方法.pdf
  15. 如何在html中插入带圈数字,Excel2013中带圈数字怎么输入
  16. angular uibpagination 分页相关
  17. 记录一个Kivy在windows上打包的问题
  18. Maven 设置项目编码
  19. Web开发应了解的5种设计模式(转)
  20. 用容斥原理计算具有有限重数的多重集合的 r-组合(附代码)

热门文章

  1. 慕课-现代通信技术-知识点记录
  2. Mathematica 13 for Mac(科学计算软件)
  3. win7允许远程桌面连接这台计算机,教你怎样win7远程桌面连接设置
  4. 计算机组装维护理论知识大全,计算机组装与维护知识汇总.docx
  5. matlab 方程组求导,matlab求导及线性方程组的求解
  6. [转帖] 豆丁文档下载器v20100529绿色免费版_豆丁网文档下载工具
  7. 码农小汪-非常不安逸 怎么我写的注解没有自动给我生成时间呢!javadoc 配置起来非常的简单
  8. 工作站安装Ubuntu,显卡驱动,pytorch全流程
  9. lomboz连接mysql数据库_『在线等』 lomboz-eclipse连接mysql,连接失败
  10. 2017大学网考计算机b,(热)2017年4月网考 大学英语b网考 电大英语网考 计算机应用.doc...