真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

go語言守護(hù)進(jìn)程 go守護(hù)進(jìn)程管理

如何使用Go語言是操作Docker

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

成都創(chuàng)新互聯(lián)公司憑借在網(wǎng)站建設(shè)、網(wǎng)站推廣領(lǐng)域領(lǐng)先的技術(shù)能力和多年的行業(yè)經(jīng)驗(yàn),為客戶提供超值的營銷型網(wǎng)站建設(shè)服務(wù),我們始終認(rèn)為:好的營銷型網(wǎng)站就是好的業(yè)務(wù)員。我們已成功為企業(yè)單位、個(gè)人等客戶提供了成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)服務(wù),以良好的商業(yè)信譽(yù),完善的服務(wù)及深厚的技術(shù)力量處于同行領(lǐng)先地位。

轉(zhuǎn)自:

整理:地鼠文檔

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

該部分會(huì)介紹如何使用 Golang + Docker API 進(jìn)行管理本地的 Docker。

第一個(gè)例子將展示如何運(yùn)行容器,相當(dāng)于 docker run docker.io/library/alpine echo "hello world" :

還可以在后臺(tái)運(yùn)行容器,相當(dāng)于 docker run -d bfirsh/reticulate-splines :

列出正在運(yùn)行的容器,就像使用 docker ps 一樣:

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

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

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

獲取本地所有的鏡像,相當(dāng)于 docker image ls 或 docker images :

拉取指定鏡像,相當(dāng)于 docker pull alpine :

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

值得注意的是:在使用 Docker API 的 Go SDK 時(shí),憑證是以明文的方式進(jìn)行傳輸?shù)模匀绻亲越ǖ溺R像倉庫,請務(wù)必使用 HTTPS !

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

當(dāng)然,除了可以管理本地的 Docker , 我們同樣也可以通過使用 Golang + Docker API 管理遠(yuǎn)程的 Docker 。

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

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

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

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

如何運(yùn)行一個(gè)golang程序?yàn)槭刈o(hù)進(jìn)程

您好,很高興為您解答。

安裝daemonize

安裝git環(huán)境

yum?install?git?-y

獲取daemonize

git?clone?git://github.com/bmc/daemonize.git

安裝daemonize

cd?daemonize

./configure

make??make?install

查看是否安裝

daemonize?-v

通過daemonize執(zhí)行g(shù)olang守護(hù)進(jìn)程

需要打包golang程序?yàn)榭蓤?zhí)行文件(go build),并通過daemonize來執(zhí)行它來實(shí)現(xiàn)守護(hù)進(jìn)程,如:

daemonize?-p?/var/run/myapp.pid?-l?/var/lock/subsys/myapp?-u?nobody?/path/to/myapp

如若滿意,請點(diǎn)擊右側(cè)【采納答案】,如若還有問題,請點(diǎn)擊【追問】

希望我的回答對(duì)您有所幫助,望采納!

~?O(∩_∩)O~

Supervisor與Logrotate

在golang的gin項(xiàng)目中使用supervisor守護(hù)進(jìn)程,用子進(jìn)程配置將標(biāo)準(zhǔn)輸出日志轉(zhuǎn)移到指定目錄下,然后使用阿里云的日志服務(wù)將標(biāo)準(zhǔn)輸出日志轉(zhuǎn)移到線上做一些分析和預(yù)警。

? 項(xiàng)目上線之后一切正常,可是周日夜里三點(diǎn)左右阿里云的日志服務(wù)采集不到日志,一頓pv為0的告警過來,趕緊打開電腦,線上服務(wù)正常,松一口氣,supervisor狀態(tài)也正常,觀察了一會(huì)業(yè)務(wù)數(shù)據(jù)正常就安然入睡了,心想可能是因?yàn)榕渲庙?xiàng)有缺陷吧,回頭好好整整supervisor的配置再觀察一波。

? ?早上起來打開服務(wù)器,cd /var/log/supervisor/,發(fā)現(xiàn)存在兩個(gè)日志文件,分別是xxxx.log-20201223和xxxx.log,xxxx.log的大小為0,xxxx.log-20201223還在繼續(xù)寫入請求日志,權(quán)限問題?chmod 777之后發(fā)現(xiàn)新的文件還是不寫入日志,重啟 supervisor之后發(fā)現(xiàn)日志能正常寫入了。。。一開始懷疑是supervisor日志切割備份有問題,將配置stdout日志文件大小的stdout_logfile_maxbytes配置項(xiàng),默認(rèn) 50MB改成0,代表無限大,stdout日志文件備份數(shù)的stdout_logfile_backups配置項(xiàng),默認(rèn)10改為0,代表不備份,重啟supervisor,心想不切割總不會(huì)再出現(xiàn)切割之后不往新文件寫內(nèi)容的問題了,真乃明智之選。:)

? ? 一周過去,0pv的告警如期而至,雖然不影響線上業(yè)務(wù),如鯁在喉讓我久久不能釋懷。全網(wǎng)翻,百度谷歌,中文英文,去github上翻issue等等,看到一個(gè)歷史issue1090,Better support for logrotate,感覺和日志轉(zhuǎn)儲(chǔ)相關(guān),于是查了下logrotate相關(guān)資料,logrotate程序是一個(gè)日志文件管理工具。用于分割日志文件,刪除舊的日志文件,并創(chuàng)建新的日志文件,起到“轉(zhuǎn)儲(chǔ)”作用。centos系統(tǒng)默認(rèn)安裝,于是找到對(duì)應(yīng)的配置文件,果不其然里面就有supervisor,默認(rèn)配置如下:

/var/log/supervisor/*.log {

? missingok

? weekly

? notifempty

? nocompress

},看到weekly感覺離這個(gè)問題的答案不遠(yuǎn)了,于是去查找linux的logrotate往舊文件寫入的問題,在一篇logrotate writing to old app.log.1 instead of app.log的文章中找到需要配置參數(shù)copytruncate,是用于還在打開中的日志文件,把當(dāng)前日志備份并截?cái)?;是先拷貝再清空的方式,拷貝和清空之間有一個(gè)時(shí)間差,可能會(huì)丟失部分日志數(shù)據(jù)。增加完配置之后,為了快速驗(yàn)證結(jié)果,修改weekly為daily,第二天日志正常切割了,新的文件也正常寫入了標(biāo)準(zhǔn)日志。至此問題解決。

? ? linux的logrotate對(duì)于運(yùn)維來說可能是常識(shí),作為開發(fā)剛接觸運(yùn)維,只能慢慢積累了,工作之余看看相關(guān)的運(yùn)維知識(shí),盡量少采坑。

如何通俗解釋Docker是什么?

通俗解釋docker就是集裝箱。

Docker 是一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的鏡像中,然后發(fā)布到任何流行的Linux或Windows機(jī)器上,也可以實(shí)現(xiàn)虛擬化。容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口。

一個(gè)完整的Docker有以下幾個(gè)部分組成:

DockerClient客戶端。

Docker Daemon守護(hù)進(jìn)程。

Docker Image鏡像。

DockerContainer容器。

在docker的網(wǎng)站上提到了docker的典型場景:

Automating the packaging and deployment of applications(使應(yīng)用的打包與部署自動(dòng)化)。

Creation of lightweight, private PAAS environments(創(chuàng)建輕量、私密的PAAS環(huán)境)。

Automated testing and continuous integration/deployment(實(shí)現(xiàn)自動(dòng)化測試和持續(xù)的集成/部署)。

Deploying and scaling web apps, databases and backend services(部署與擴(kuò)展webapp、數(shù)據(jù)庫和后臺(tái)服務(wù))。


當(dāng)前標(biāo)題:go語言守護(hù)進(jìn)程 go守護(hù)進(jìn)程管理
網(wǎng)站路徑:http://weahome.cn/article/doeocph.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部