go語言實現(xiàn)虛擬主機 go語言搭建服務(wù)器

什么是docker容器技術(shù)?

docker容器技術(shù)指Docker是一個由GO語言寫的程序運行的“容器”(Linux containers, LXCs)

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、小程序制作、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了臨淄免費建站歡迎大家使用!

Docker則實現(xiàn)了一種應(yīng)用程序級別的隔離,它改變我們基本的開發(fā)、操作單元,由直接操作虛擬主機(VM),轉(zhuǎn)換到操作程序運行的“容器”上來。

Docker是為開發(fā)者和系統(tǒng)管理員設(shè)計的,用來發(fā)布和運行分布式應(yīng)用程序的一個開放性平臺。由兩部分組成:

Docker Engine: 一個便攜式、輕量級的運行環(huán)境和包管理器。(注* 單OS vs 單線程)

Docker Hub: 為創(chuàng)建自動化工作流和分享應(yīng)用創(chuàng)建的云服務(wù)組成。(注* 云端鏡像/包管理 vs npm包管理,是不是跟npm特別像?)

從2013年3月20日,第一個版本的Docker正式發(fā)布到 2014年6月Docker 1.0 正式發(fā)布,經(jīng)歷了15個月。 雖然發(fā)展歷程很短,但Docker正在有越來越流行的趨勢。

其實Container技術(shù)并非Docker的創(chuàng)新,HeroKu, NodeJitsu 等云服務(wù)商都采用了類似這種輕量級的虛擬化技術(shù),但Docker是第一個將這這種Container技術(shù)大規(guī)模開源并被社區(qū)廣泛接受的。

如何使用Go語言是操作Docker

Docker 提供了一個與 Docker 守護進程交互的 API (稱為Docker Engine API),我們可以使用官方提供的 Go 語言的 SDK 進行構(gòu)建和擴展 Docker 應(yīng)用程序和解決方案。

轉(zhuǎn)自:

整理:地鼠文檔

通過下面的命令就可以安裝 SDK 了:

該部分會介紹如何使用 Golang + Docker API 進行管理本地的 Docker。

第一個例子將展示如何運行容器,相當于 docker run docker.io/library/alpine echo "hello world" :

還可以在后臺運行容器,相當于 docker run -d bfirsh/reticulate-splines :

列出正在運行的容器,就像使用 docker ps 一樣:

如果是 docker ps -a ,我們可以通過修改 types.ContainerListOptions 中的 All 屬性達到這個目的:

通過上面的例子,我們可以獲取容器的列表,所以在這個案例中,我們可以去停止所有正在運行的容器。

通過指定容器的 ID,我們可以獲取對應(yīng) ID 的容器的日志:

獲取本地所有的鏡像,相當于 docker image ls 或 docker images :

拉取指定鏡像,相當于 docker pull alpine :

除了公開的鏡像,我們平時還會用到一些私有鏡像,可以是 DockerHub 上私有鏡像,也可以是自托管的鏡像倉庫,比如 harbor 。這個時候,我們需要提供對應(yīng)的憑證才可以拉取鏡像。

值得注意的是:在使用 Docker API 的 Go SDK 時,憑證是以明文的方式進行傳輸?shù)?,所以如果是自建的鏡像倉庫,請務(wù)必使用 HTTPS !

我們可以將一個已有的容器通過 commit 保存成一個鏡像:

當然,除了可以管理本地的 Docker , 我們同樣也可以通過使用 Golang + Docker API 管理遠程的 Docker 。

默認 Docker 是通過非網(wǎng)絡(luò)的 Unix 套接字運行的,只能夠進行本地通信( /var/run/docker.sock ),是不能夠直接遠程連接 Docker 的。

我們需要編輯配置文件 /etc/docker/daemon.json ,并修改以下內(nèi)容(把 192.168.59.3 改成你自己的 IP 地址),然后重啟 Docker :

創(chuàng)建 client 的時候需要指定遠程 Docker 的地址,這樣就可以像管理本地 Docker 一樣管理遠程的 Docker 了:

現(xiàn)在已經(jīng)有很多可以管理 Docker 的產(chǎn)品,它們便是這樣進行實現(xiàn)的,比如: portainer 。

go語言能做什么?

很多朋友可能知道Go語言的優(yōu)勢在哪,卻不知道Go語言適合用于哪些地方。

1、 Go語言作為服務(wù)器編程語言,很適合處理日志、數(shù)據(jù)打包、虛擬機處理、文件系統(tǒng)、分布式系統(tǒng)、數(shù)據(jù)庫代理等;網(wǎng)絡(luò)編程方面。Go語言廣泛應(yīng)用于Web應(yīng)用、API應(yīng)用、下載應(yīng)用等;除此之外,Go語言還可用于內(nèi)存數(shù)據(jù)庫和云平臺領(lǐng)域,目前國外很多云平臺都是采用Go開發(fā)。

2、 其實Go語言主要用作服務(wù)器端開發(fā)。其定位是用來開發(fā)"大型軟件"的,適合于很多程序員一起開發(fā)大型軟件,并且開發(fā)周期長,支持云計算的網(wǎng)絡(luò)服務(wù)。Go語言能夠讓程序員快速開發(fā),并且在軟件不斷的增長過程中,它能讓程序員更容易地進行維護和修改。它融合了傳統(tǒng)編譯型語言的高效性和腳本語言的易用性和富于表達性。

3、 Go語言成功案例。Nsq:Nsq是由Go語言開發(fā)的高性能、高可用消息隊列系統(tǒng),性能非常高,每天能處理數(shù)十億條的消息;

4、 Docker:基于lxc的一個虛擬打包工具,能夠?qū)崿F(xiàn)PAAS平臺的組建。

5、 Packer:用來生成不同平臺的鏡像文件,例如VM、vbox、AWS等,作者是vagrant的作者

6、 Skynet:分布式調(diào)度框架。

7、 Doozer:分布式同步工具,類似ZooKeeper。

8、 Heka:mazila開源的日志處理系統(tǒng)。

9、 Cbfs:couchbase開源的分布式文件系統(tǒng)。

10、 Tsuru:開源的PAAS平臺,和SAE實現(xiàn)的功能一模一樣。

11、 Groupcache:memcahe作者寫的用于Google下載系統(tǒng)的緩存系統(tǒng)。

12、 God:類似redis的緩存系統(tǒng),但是支持分布式和擴展性。

13、 Gor:網(wǎng)絡(luò)流量抓包和重放工具。

以上的就是關(guān)于go語言能做什么的內(nèi)容介紹了。

分享題目:go語言實現(xiàn)虛擬主機 go語言搭建服務(wù)器
URL網(wǎng)址:http://muchs.cn/article30/hhepso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、網(wǎng)站維護域名注冊、微信小程序網(wǎng)頁設(shè)計公司、軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管