CoreOS实践(1)—CoreOS初体验
CoreOS主要包含以下一些东西:
(1)最小的OS:kernel+systemd
(2)使用Docker运行应用
(3)使用fleet管理集群
(4)使用etcd实现服务发现:一个分布式的K/V存储引擎存储配置数据
下载vagrant的coreos配置文件
$ git clone https://github.com/coreos/coreos-vagrant.git
$vagrant up
$ vagrant status
Current machine states:
core-01 running (virtualbox)
core-02 running (virtualbox)
core-03 running (virtualbox)
$ ssh-add ~/.vagrant.d/insecure_private_key
Identity added: /Users/yy/.vagrant.d/insecure_private_key (/Users/yy/.vagrant.d/insecure_private_key)
$ vagrant ssh core-01
Last login: Sun Sep 7 16:23:31 2014 from 10.0.2.2
CoreOS (beta)
core@core-01 ~ $ fleetctl list-machines
MACHINE IP METADATA
542a4130... 172.17.8.101 -
bcb90abf... 172.17.8.102 -
e6a8eaa9... 172.17.8.103 -
读写etcd
core@core-01 ~ $ etcdctl set first-etcd-key "Hello World"
Hello World
core@core-01 ~ $ etcdctl get first-etcd-key
Hello World
在core-02上可以读到first-etcd-key对应的值:
core@core-02 ~ $ etcdctl get first-etcd-key
Hello World
也可以直接提供的API读取相应的key:
core@core-02 ~ $ curl -L http://127.0.0.1:4001/v1/keys/first-etcd-key
{"action":"get","key":"/first-etcd-key","value":"Hello World","index":2264}
使用fleetctl管理服务
core@core-01 ~ $ cat hello.service
[Unit]
Description=My Service
After=docker.service
[Service]
TimeoutStartSec=0
ExecStartPre=-/usr/bin/docker kill hello
ExecStartPre=-/usr/bin/docker rm hello
ExecStartPre=/usr/bin/docker pull busybox
ExecStart=/usr/bin/docker run --name hello busybox /bin/sh -c "while true; do echo Hello World; sleep 1; done"
ExecStop=/usr/bin/docker stop hello
core@core-01 ~ $ fleetctl load hello.service
Job hello.service loaded on 542a4130.../172.17.8.101
core@core-01 ~ $ fleetctl start hello.service
Job hello.service launched on 542a4130.../172.17.8.101
查看服务状态
core@core-01 ~ $ fleetctl status hello.service
● hello.service - My Service
Loaded: loaded (/run/fleet/units/hello.service; linked-runtime)
Active: active (running) since Mon 2014-09-08 04:21:13 UTC; 1min 25s ago
Process: 1117 ExecStartPre=/usr/bin/docker pull busybox (code=exited, status=0/SUCCESS)
Process: 1108 ExecStartPre=/usr/bin/docker rm hello (code=exited, status=1/FAILURE)
Process: 1046 ExecStartPre=/usr/bin/docker kill hello (code=exited, status=1/FAILURE)
Main PID: 1185 (docker)
CGroup: /system.slice/hello.service
└─1185 /usr/bin/docker run --name hello busybox /bin/sh -c while true; do echo Hello World; sleep 1; done
Sep 08 04:22:28 core-01 docker[1185]: Hello World
Sep 08 04:22:29 core-01 docker[1185]: Hello World
Sep 08 04:22:30 core-01 docker[1185]: Hello World
Sep 08 04:22:31 core-01 docker[1185]: Hello World
Sep 08 04:22:32 core-01 docker[1185]: Hello World
Sep 08 04:22:33 core-01 docker[1185]: Hello World
Sep 08 04:22:34 core-01 docker[1185]: Hello World
Sep 08 04:22:35 core-01 docker[1185]: Hello World
Sep 08 04:22:36 core-01 docker[1185]: Hello World
Sep 08 04:22:37 core-01 docker[1185]: Hello World
core@core-01 ~ $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fa7084105f19 busybox:buildroot-2014.02 /bin/sh -c 'while tr 2 minutes ago Up 2 minutes hello
在另一个coreos查看服务状态
$ vagrant ssh core-02 -- -A
Last login: Mon Sep 8 04:35:40 2014 from 10.0.2.2
CoreOS (beta)
core@core-02 ~ $ fleetctl list-units
UNIT DSTATE TMACHINE STATE MACHINE ACTIVE
hello.service launched 542a4130.../172.17.8.101 launched 542a4130.../172.17.8.101 active
core@core-02 ~ $ fleetctl status hello.service
● hello.service - My Service
Loaded: loaded (/run/fleet/units/hello.service; linked-runtime)
Active: active (running) since Mon 2014-09-08 04:21:13 UTC; 15min ago
Process: 1117 ExecStartPre=/usr/bin/docker pull busybox (code=exited, status=0/SUCCESS)
Process: 1108 ExecStartPre=/usr/bin/docker rm hello (code=exited, status=1/FAILURE)
Process: 1046 ExecStartPre=/usr/bin/docker kill hello (code=exited, status=1/FAILURE)
Main PID: 1185 (docker)
CGroup: /system.slice/hello.service
└─1185 /usr/bin/docker run --name hello busybox /bin/sh -c while true; do echo Hello World; sleep 1; done
Sep 08 04:36:20 core-01 docker[1185]: Hello World
Sep 08 04:36:21 core-01 docker[1185]: Hello World
Sep 08 04:36:22 core-01 docker[1185]: Hello World
Sep 08 04:36:23 core-01 docker[1185]: Hello World
Sep 08 04:36:24 core-01 docker[1185]: Hello World
Sep 08 04:36:25 core-01 docker[1185]: Hello World
Sep 08 04:36:26 core-01 docker[1185]: Hello World
Sep 08 04:36:27 core-01 docker[1185]: Hello World
Sep 08 04:36:28 core-01 docker[1185]: Hello World
Sep 08 04:36:29 core-01 docker[1185]: Hello World
core@core-02 ~ $ fleetctl destroy hello.service
Destroyed hello.service
主要参考
[1] https://coreos.com/docs/quickstart/
作者:YY哥
出处:http://www.cnblogs.com/hustcat/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
CoreOS实践(1)—CoreOS初体验的更多相关文章
- [CoreOS 转载] CoreOS实践指南(一)
转载:http://www.csdn.net/article/2014-12-29/2823356 摘要:CoreOS是一个采用了高度精简的系统内核及外围定制的操作系统.ThoughtWorks的软件 ...
- [CoreOS 转载] CoreOS实践指南(七):Docker容器管理服务
转载:http://www.csdn.net/article/2015-02-11/2823925 摘要:当Docker还名不见经传的时候,CoreOS创始人Alex就预见了这个项目的价值,并将其做为 ...
- [CoreOS 转载] CoreOS实践指南(五):分布式数据存储Etcd(上)
转载:http://www.csdn.net/article/2015-01-22/2823659 摘要:在“漫步云端:CoreOS实践指南”系列的前几篇,分别介绍了如何架设CoreOS集群,系统服务 ...
- [CoreOS 转载] CoreOS实践指南(四):集群的指挥所Fleet
转载:http://www.csdn.net/article/2015-01-14/2823554/2 摘要:CoreOS是采用了高度精简的系统内核及外围定制的操作系统.ThoughtWorks的软件 ...
- [CoreOS 转载] CoreOS实践指南(三):系统服务管家Systemd
转载:http://www.csdn.net/article/2015-01-08/2823477 摘要:CoreOS是采用了高度精简的系统内核及外围定制的操作系统.ThoughtWorks的软件工程 ...
- [CoreOS 转载]CoreOS实践指南(二):架设CoreOS集群
转载:http://www.csdn.net/article/2015-01-04/2823399 摘要:CoreOS是一个采用了高度精简的系统内核及外围定制的操作系统.ThoughtWorks的软件 ...
- node.js 初体验
node.js 初体验 2011-10-31 22:56 by 聂微东, 174545 阅读, 118 评论, 收藏, 编辑 PS: ~ 此篇文章的进阶内容在为<Nodejs初阶之express ...
- Linux之初体验
预备作业03--我的Linux初体验 学习基于VirtualBox虚拟机安装Ubuntu图文教程在自己笔记本上安装Linux操作系统 一开始以为这个项目很简单,以往也在自己的笔记本上看教程安装过软件, ...
- 蚂蚁 RPC 框架 SOFA-RPC 初体验
前言 最近蚂蚁金服开源了分布式框架 SOFA,楼主写了一个 demo,体验了一下 SOFA 的功能,SOFA 完全兼容 SpringBoot(当然 Dubbo 也是可以兼容的). 项目地址:Alipa ...
随机推荐
- secure erase 时必须umount
不umont就进行secure erase,仍然会执行成功,但是ssd确没有被清0,使用hexdump可以验证. 但是secure erase 命令却返回成功,造成误解以为已经擦除成功. 所以,sec ...
- HDU2243_考研路茫茫――单词情结
给出一些词根,问你有多少种长度为L的串包含至少一个词根. 去年就在敲这个题了,今年才敲出来,还是内牛满面之中... 要求包含至少一个的情况,需要求出所有的情况,减去一个都没有的情况就可以了. 对于给出 ...
- jsp_数据库的连接
一.添加数据库以及表 在这里我们使用的是mysql数据库 二.配置数据库的驱动程序 将mysql的驱动程序复制到Tomcat目录下的lib目录中 注:在Tomcat中如果配置了新的jar包,则配置完成 ...
- C++ map使用(基于RBTree)
一.insert ◦1)用insert函数插入pair数据 ◦map<int, string> mapStudent; ◦mapStudent.insert(pair<int, st ...
- Xcode配置.pch文件
--到Xcode7都可以这么解决.亲测. 发现一个好东西.就是这个.pch文件.我的理解是他里面存放了我们在各个controller里面需要的头文件,那这样一来,就免去了在不同的ViewControl ...
- International Conference in 2014
International Conference on Machine Learning (ICML2014, Beijing).(papers are available) Neural Infor ...
- SQLServer的Login迁移脚本
背景:公司的数据由SQLServer2008 R2升级至SQLServer2012,并配置了AlwaysOn,本脚本用于将主节点的Login迁移至辅助节点. 1.在主节点执行以下脚本创建存储过程: U ...
- 分享一下SQLSERVER技术交流QQ群里的群共享资源
分享一下SQLSERVER技术交流QQ群里的群共享资源 SQLSERVER技术交流QQ群已经开了一段时间了,人数已经有了100多号人, 而群里面很多SQLSERVER爱好者上传了他们宝贵的SQLSER ...
- 使用 Microsoft Fakes 进行单元测试
本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 在编写单元测试时,我们会遇到不同的外部依赖项,大体上可以分为两类: 依赖于接口或抽象类 依赖于具体类 ...
- 修改注册表来修改IE的设置---资料汇总
原文链接: http://blog.csdn.net/wangqiulin123456/article/details/17068649 附带批处理执行脚本: @echo off &title ...