自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

CoreOS 實(shí)戰(zhàn):在 UOS上體驗(yàn)CoreOS 操作全記錄

云計(jì)算
CoreOS 與 docker 的配合,相當(dāng)于把傳統(tǒng)的混雜在一起的操作系統(tǒng)和應(yīng)用做了解耦,分成兩層,CoreOS 更偏底層,甚至有點(diǎn)像硬件固件,而 docker 負(fù)責(zé)偏上的應(yīng)用層。

[[126325]]

近期 UnitedStack 公有云在國(guó)內(nèi)率先提供了對(duì) CoreOS 的支持,廣大玩家可以很輕松地在 UOS 上體驗(yàn)、研究 CoreOS 了。以下是一點(diǎn)經(jīng)驗(yàn)分享,拋磚引玉,希望能給大家?guī)硇┰S幫助。

CoreOS 和 docker 簡(jiǎn)介

關(guān)注云計(jì)算的同學(xué)一定注意到了 docker ,而關(guān)注 docker 的朋友,也一定聽說過 CoreOS 。它們都是近期很火熱的焦點(diǎn),網(wǎng)上鋪天蓋地有各式各樣的介紹,不再引述,這里僅說一點(diǎn)個(gè)人看法。

可以說,CoreOS 是Linux發(fā)行版中的一朵奇葩,而 docker 是虛擬化領(lǐng)域的一朵奇葩,二者合在一起,于是我們得到了。。。兩朵奇葩。。。哈哈,玩笑。嚴(yán)肅講,CoreOS 不是以傳統(tǒng)模式做的 OS:

1  傳統(tǒng)的 Linux 發(fā)行版(除了Gentoo這樣的奇葩),都有包管理體系、軟件包repo,系統(tǒng)安裝的過程就是從repo(可以是http/ftp、nfs、iso等)中獲取軟件包解包安裝。而 CoreOS 壓根就沒有包管理機(jī)制,官方直接發(fā)布二進(jìn)制的系統(tǒng)映像,安裝方式就是dd。不過映像格式倒是很豐富,ISO、PXE、各大虛擬機(jī)、多種云平臺(tái)一應(yīng)俱全。

2 分區(qū)模式也比較獨(dú)特,號(hào)稱有兩個(gè)root分區(qū),一個(gè)用于常規(guī)啟動(dòng),另一個(gè)作為更新分區(qū),系統(tǒng)更新將會(huì)被安裝到更新分區(qū)。兩個(gè)分區(qū)可以切換,系統(tǒng)更新后,更新分區(qū)會(huì)自動(dòng)變?yōu)槌R?guī)啟動(dòng)分區(qū),重啟就會(huì)加載新系統(tǒng)。在支持的平臺(tái)上,使用kexec方式重啟,避免漫長(zhǎng)的硬件自檢過程,僅需數(shù)秒即可完成。從實(shí)際的分區(qū)列表看,具體實(shí)現(xiàn)細(xì)節(jié)要更復(fù)雜,精力所限筆者尚未深究,有了解的同學(xué)還請(qǐng)不吝賜教,謝謝!

3 CoreOS 設(shè)計(jì)之初,就沒打算讓用戶以傳統(tǒng)的裸進(jìn)程的方式跑服務(wù),而是全部通過docker來運(yùn)行應(yīng)用,CoreOS 就是一個(gè)極簡(jiǎn)的、只跑docker的 Linux 系統(tǒng)。另一方面,docker 也不是要做傳統(tǒng)意義的虛擬機(jī)(盡管 docker 容器很像虛擬機(jī)),其設(shè)計(jì)理念是“一種新的應(yīng)用打包/部署/運(yùn)行/管理方式”。 CoreOS 與 docker 的配合,相當(dāng)于把傳統(tǒng)的混雜在一起的操作系統(tǒng)和應(yīng)用做了解耦,分成兩層,CoreOS 更偏底層,甚至有點(diǎn)像硬件固件,而 docker 負(fù)責(zé)偏上的應(yīng)用層。

CoreOS官網(wǎng)主頁有一句話,“A new way to think about servers”,個(gè)人認(rèn)為是恰如其分的。如果把CoreOS整體當(dāng)做一個(gè)“內(nèi)核”,跑在其中的docker容器就有點(diǎn)像一個(gè)個(gè)的“進(jìn)程”;如果把 CoreOS 看做一個(gè) hypervisor,那docker容器就像是宿主機(jī)中的虛機(jī)。而事實(shí)上,docker容器既不是進(jìn)程,也不是虛機(jī)。CoreOS+docker,確實(shí)可以認(rèn)為是一種新形態(tài)的OS 和服務(wù)運(yùn)行方式。

4 CoreOS 內(nèi)置了兩個(gè)服務(wù):etcd 和 fleet。它們都是CoreOS的子項(xiàng)目。etcd是一個(gè)高可用的鍵值存儲(chǔ)系統(tǒng),主要用于共享配置和服務(wù)發(fā)現(xiàn),類似于 ZooKeeper 和 Doozer。 fleet是一個(gè)分布式的container發(fā)布工具,用于進(jìn)行集群中任務(wù)的提交和管理。個(gè)人理解,etcd用來自動(dòng)化構(gòu)建CoreOS集群,而fleet則是運(yùn)行于CoreOS集群之上的任務(wù)(docker)管理平臺(tái)。也就是說,CoreOS設(shè)計(jì)之初,就將運(yùn)行環(huán)境定位于集群&平臺(tái)。

#p#

在UOS上創(chuàng)建CoreOS 云主機(jī)

言歸正傳,以下是在UOS上創(chuàng)建 CoreOS 云主機(jī)的操作步驟:

1. 打開UOS控制臺(tái),點(diǎn)擊“創(chuàng)建云主機(jī)”,輸入主機(jī)名,鏡像選擇 CoreOS,點(diǎn)擊“下一步”。

2. 虛機(jī)配置,內(nèi)存建議2G或更多,因?yàn)槟承ヾocker任務(wù)比較耗內(nèi)存;

子網(wǎng),選“基礎(chǔ)網(wǎng)絡(luò)”;

登陸信息,目前只支持秘鑰方式,如果沒有秘鑰,需要先在“密鑰對(duì)”頁面中創(chuàng)建一個(gè)。

都選好后,點(diǎn)擊“創(chuàng)建”即可。

3. 綁定一個(gè)公網(wǎng)IP。 如果沒有可用公網(wǎng)IP,需要在“公網(wǎng)IP”頁面申請(qǐng)一個(gè)公網(wǎng)IP地址:

然后綁定到CoreOS主機(jī)

4. SSH登陸

主機(jī):就是剛才綁定的公網(wǎng)IP

方法:Public Key

用戶名:core

用戶秘鑰:選擇對(duì)應(yīng)的秘鑰

如果是 Mac / Linux,則通過以下命令登陸:

ssh -i online4.pem core@42.62.73.66

如果是Windows,這里以Xshell為例:

點(diǎn)擊“確定”保存,雙擊相應(yīng)條目即可登錄!

#p#

體驗(yàn)CoreOS

試驗(yàn)一:跑個(gè)docker 試試

1 從docker hub(docker官方提供的映像存儲(chǔ)服務(wù))拉取一個(gè)基礎(chǔ)Linux系統(tǒng)映像:

docker pull base

2 啟動(dòng)一個(gè)docker容器,運(yùn)行交互式shell,分配一個(gè)偽終端,附帶stdin和stdout:

  1. docker run -i -t base /bin/bash 

此時(shí)就attach到了剛啟動(dòng)的docker 容器的終端。運(yùn)行一些命令試試:

我們可以從該容器detach:先按 Ctrl+p,再按Ctrl+q 。此時(shí)執(zhí)行 docker ps 可以看到該容器仍在后臺(tái)運(yùn)行:

用docker kill 命令可以停止容器。停掉的容器并沒有完全刪除,還可以重新起來,而且前面做的改動(dòng)會(huì)被保留:

試驗(yàn)二:運(yùn)行WordPress

WordPress需要 mysql 數(shù)據(jù)庫,所以先 pull mysql:

  1. docker pull mysql 

然后 pull wordpress 映像:

  1. docker pull wordpress 

運(yùn)行 mysql:

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

運(yùn)行 wordpress:

  1. docker run --name wordpress_1 --link mysql_1:mysql -p 80:80 -d wordpress 

參數(shù)解釋:

  • --name mysql_1 給docker容器起個(gè)名字。
  • -e MYSQL_ROOT_PASSWORD=test_test 指定mysql的root密碼。
  • -p 80:80 把主機(jī)(CoreOS)的80端口映射到docker容器內(nèi)部的80端口,這樣就可以通過“主機(jī)ip:80”訪問到容器里80端口的服務(wù)。
  • --link mysql_1:mysql 這個(gè)參數(shù)比較神奇,看起來很簡(jiǎn)單,但要解釋清楚還是有點(diǎn)復(fù)雜的。簡(jiǎn)言之,這個(gè)參數(shù)把兩個(gè)docker容器打通了,使它們內(nèi)部的應(yīng)用可以很容易地互訪。

OK,現(xiàn)在可以訪問WordPress了,直接在瀏覽器地址欄輸入前面綁定的公網(wǎng)ip:

#p#

稍微深入一點(diǎn)

額,wordpress就這么起來了,大家是不是感覺有點(diǎn)太。。。輕巧了。。。

的確,經(jīng)過docker封裝的應(yīng)用,用起來很方便,但也把大量細(xì)節(jié)隱藏了。作為一個(gè)慣于尋根究底、不肯放過任何細(xì)節(jié)的資深&優(yōu)秀OPer,難以容忍真相被層層包裹在深幕之后。

好吧,我們?cè)偻钐幪綄ひ幌隆?/p>

Q1:這兩個(gè)服務(wù)這么不聲不響就起來了,也沒輸出啥信息么? A1:可以通過docker logs 命令查看每個(gè)容器的運(yùn)行日志:

Q2:平時(shí)用慣了ssh,假如想登錄到某個(gè)docker容器內(nèi)部,該怎么做呢? A2:用nsenter 可以“滲透”進(jìn)入到運(yùn)行中的docker容器。

首先,找到容器的***個(gè)進(jìn)程的PID

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

然后滲入(需要root權(quán)限)

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

如上所示,我們進(jìn)入了 mysql_1 這個(gè)容器。確實(shí)太純凈了,只有mysql,連 top、ps 都沒有。。。那只好連上mysql看看:

OK,再進(jìn)入wordpress看看:

其實(shí),這種方式并不是ssh登錄,不需要容器內(nèi)部運(yùn)行sshd服務(wù)。而是用主機(jī)的bash進(jìn)入容器的name space,“附著”到容器上。所以才叫做 ns(name space) enter。

之所以能這么做,是因?yàn)槊總€(gè)docker容器中的進(jìn)程,實(shí)際上都是主機(jī)(CoreOS)的本地進(jìn)程,可以通過ps 看到:

有點(diǎn)神奇哈!到這里大家應(yīng)該能感覺到,上面反復(fù)提到的name space,就是神奇的docker魔法的真正謎底。當(dāng)然還需要aufs、cgroups等技術(shù)的支撐,以及開發(fā)者們的不懈努力,才最終呈現(xiàn)給大家完整的docker平臺(tái)。

玩的開心!

參考資料:

  • CoreOS官網(wǎng): https://coreos.com/
  • Docker中文社區(qū): https://www.dockboard.org/
  • Docker 官網(wǎng): 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

博文出處:http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=4165655&extra=page%3D1%26filter%3Dtypeid%26typeid%3D178%26typeid%3D178

責(zé)任編輯:Ophira 來源: ChinaUnix論壇
相關(guān)推薦

2020-12-13 08:25:32

FedoraCoreOSLinux

2021-10-03 14:47:26

Fedora CoreGitHub Acti運(yùn)行器

2013-08-26 09:31:49

2014-07-22 15:33:02

Ubuntu

2015-11-17 09:46:29

CoreOS開源漏洞分析

2015-05-05 14:16:22

容器技術(shù)CoreOSGoogle

2015-05-05 11:04:31

CoreOS自動(dòng)化運(yùn)維

2015-07-20 15:08:58

CoreOS安裝

2015-07-09 09:19:02

2015-08-27 13:23:42

CoreOSKubernetesKubelet

2023-02-18 13:47:04

CoreOS容器操作系統(tǒng)云原生

2015-01-19 14:14:59

dockercoreosvagrant

2014-12-03 10:13:01

Docker容器技術(shù)Rocket

2018-03-28 09:08:39

微軟開源Windows

2015-01-13 09:20:08

DockerCoreOSRocket

2015-12-01 16:39:04

工業(yè)4.0華為

2015-07-23 14:09:15

CygwinWindowsLinux

2017-08-11 10:38:12

LinuxCoreOS發(fā)行版

2014-12-24 11:34:23

CoreOSWordPress集群部署

2015-09-06 10:34:47

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)