成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

關(guān)于/var/run/docker.sock

Bowman_han / 871人閱讀

摘要:創(chuàng)建容器命令通過套接字發(fā)送到守護(hù)進(jìn)程的接口,這個(gè)將會(huì)基于鏡像創(chuàng)建容器并返回容器的。注意綁定套接字之后,容器的權(quán)限會(huì)很高,可以控制守護(hù)進(jìn)程。

譯者按: 這篇博客介紹了什么是/var/run/docker.sock,以及如何使用/var/run/docker.sock與Docker守護(hù)進(jìn)程通信,并且提供了兩個(gè)簡(jiǎn)單的示例。理解這些,我們就可以運(yùn)行一些能夠管理Docker的Docker容器,比如Portainer、Kubernetes,是不是很神奇呢?

原文: About /var/run/docker.sock

譯者: Fundebug

為了保證可讀性,本文采用意譯而非直譯。

運(yùn)行過Docker Hub的Docker鏡像的話,會(huì)發(fā)現(xiàn)其中一些容器時(shí)需要掛載/var/run/docker.sock文件。這個(gè)文件是什么呢?為什么有些容器需要使用它?簡(jiǎn)單地說,它是Docker守護(hù)進(jìn)程(Docker daemon)默認(rèn)監(jiān)聽的Unix域套接字(Unix domain socket),容器中的進(jìn)程可以通過它與Docker守護(hù)進(jìn)程進(jìn)行通信。

圖片來源: http://blog.honeybadger.io

舉例

不妨看一下 Portainer,它提供了圖形化界面用于管理Docker主機(jī)和Swarm集群。如果使用Portainer管理本地Docker主機(jī)的話,需要綁定/var/run/docker.sock:

docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer

訪問9000端口可以查看圖形化界面,可以管理容器(container),鏡像(image),數(shù)據(jù)卷(volume)...

Portainer通過綁定的/var/run/docker.sock文件與Docker守護(hù)進(jìn)程通信,執(zhí)行各種管理操作。

Docker守護(hù)進(jìn)程的API

安裝Docker之后,Docker守護(hù)進(jìn)程會(huì)監(jiān)聽Unix域套接字:/var/run/docker.sock。這一點(diǎn)可以通過Docker daemon的配置選項(xiàng)看出來(在ubuntu上執(zhí)行cat /etc/default/docker ):

-H unix:///var/run/docker.sock

注: 監(jiān)聽網(wǎng)絡(luò)TCP套接字或者其他套接字需要配置相應(yīng)的-H選項(xiàng)。

Docker engine API v1.27 (最新版)定義的所有HTTP接口都可以通過/var/run/docker.sock調(diào)用。

運(yùn)行容器

使用Portainer的UI,可以輕松創(chuàng)建容器。實(shí)際上,HTTP請(qǐng)求是通過docker.sock發(fā)送給Docker守護(hù)進(jìn)程的??梢酝ㄟ^curl創(chuàng)建容器來說明這一點(diǎn)。使用HTTP接口運(yùn)行容器需要兩個(gè)步驟,先創(chuàng)建容器,然后啟動(dòng)容器。

1. 創(chuàng)建nginx容器

curl命令通過Unix套接字發(fā)送{“Image”:”nginx”}到Docker守護(hù)進(jìn)程的/containers/create接口,這個(gè)將會(huì)基于Nginx鏡像創(chuàng)建容器并返回容器的ID。

curl -XPOST --unix-socket /var/run/docker.sock -d ‘{“Image”:”nginx”}’ -H ‘Content-Type: application/json’ http://localhost/containers/create

輸出返回了容器ID:

{“Id”:”fcb65c6147efb862d5ea3a2ef20e793c52f0fafa3eb04e4292cb4784c5777d65",”Warnings”:null}
2. 啟動(dòng)nginx容器

使用返回的容器ID,調(diào)用/containers//start接口,即可啟動(dòng)新創(chuàng)建的容器。

curl -XPOST --unix-socket /var/run/docker.sock http://localhost/containers/fcb6...7d65/start

查看已啟動(dòng)的容器:

docker ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fcb65c6147ef nginx “nginx -g ‘daemon …” 5 minutes ago Up 5 seconds 80/tcp, 443/tcp ecstatic_kirch
...

可知,使用docker.sock運(yùn)行容器其實(shí)非常簡(jiǎn)單。

Docker守護(hù)進(jìn)程的事件流

Docker的API提供了/events接口,可以用于獲取Docker守護(hù)進(jìn)程產(chǎn)生的所有事件流。負(fù)載均衡組件(load balancer)組件可以通過它獲取容器的創(chuàng)建/刪除事件,從而動(dòng)態(tài)地更新配置。通過創(chuàng)建一個(gè)簡(jiǎn)單的容器,我們可以了解如何利用Docker守護(hù)進(jìn)程的事件。

1. 運(yùn)行alpine容器

下面的命令用于運(yùn)行容器,并采用交互模式(interactive mode,該模式下會(huì)直接進(jìn)入容器內(nèi)),同時(shí)綁定docker.sock。

docker run -v /var/run/docker.sock:/var/run/docker.sock -ti alpine sh
2. 監(jiān)聽Docker守護(hù)進(jìn)程的事件流

在alpine容器內(nèi),可以通過Docker套接字發(fā)送HTTP請(qǐng)求到/events接口。這個(gè)命令會(huì)一直等待Docker daemon的事件。當(dāng)新的事件發(fā)生時(shí)(例如創(chuàng)建了新的容器),會(huì)看到輸出信息。

curl --unix-socket /var/run/docker.sock http://localhost/events
3. 觀察事件

基于Nginx鏡像運(yùn)行容器之后,通過aplpine容器的標(biāo)準(zhǔn)輸出可以觀察到Docker daemon生成的事件。

docker run -p 8080:80 -d nginx

可以觀察到3個(gè)事件:

創(chuàng)建容器

連接默認(rèn)的橋接網(wǎng)絡(luò)(bridge network)

啟動(dòng)容器

結(jié)論

希望這些簡(jiǎn)單的解釋可以幫助大家理解/var/run/docker.sock文件,并且明白它綁定到容器時(shí)有何作用。顯然,真正的應(yīng)用會(huì)使用代碼而不是curl命令給Docker守護(hù)進(jìn)程發(fā)送HTTP請(qǐng)求。

注意: 綁定Docker套接字之后,容器的權(quán)限會(huì)很高,可以控制Docker守護(hù)進(jìn)程。因此,這一點(diǎn)必須謹(jǐn)慎使用,只能用于足夠信任的容器。

歡迎加入我們Fundebug的Docker技術(shù)交流群: 305097057

版權(quán)聲明:
轉(zhuǎn)載時(shí)請(qǐng)注明作者Fundebug以及本文地址:
https://blog.fundebug.com/201...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/26875.html

相關(guān)文章

  • docker 必備 — marathon 基礎(chǔ)教程

    摘要:基本概念采用與相同的機(jī)制,只是運(yùn)行在不同的抽象層次上。它是一個(gè)為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的功能包括配置維護(hù)名字服務(wù)分布式同步組服務(wù)等。它是集群的分布式,能夠原樣運(yùn)行任何二進(jìn)制發(fā)布版本,如等等。部署為了部署的方便全部使用部署。 筋斗云 豈安運(yùn)維工程師愛游泳、愛旅行、愛計(jì)算機(jī)。 前言 目前越來越多的互聯(lián)網(wǎng)企業(yè)開始使用 docker,在這之前,虛擬機(jī)占據(jù)著大部分的企業(yè)市場(chǎng)...

    羅志環(huán) 評(píng)論0 收藏0
  • docker 必備 — marathon 基礎(chǔ)教程

    摘要:基本概念采用與相同的機(jī)制,只是運(yùn)行在不同的抽象層次上。它是一個(gè)為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的功能包括配置維護(hù)名字服務(wù)分布式同步組服務(wù)等。它是集群的分布式,能夠原樣運(yùn)行任何二進(jìn)制發(fā)布版本,如等等。部署為了部署的方便全部使用部署。 筋斗云 豈安運(yùn)維工程師愛游泳、愛旅行、愛計(jì)算機(jī)。 前言 目前越來越多的互聯(lián)網(wǎng)企業(yè)開始使用 docker,在這之前,虛擬機(jī)占據(jù)著大部分的企業(yè)市場(chǎng)...

    learning 評(píng)論0 收藏0
  • Docker 與 服務(wù)發(fā)現(xiàn) - 2

    摘要:是一個(gè)鍵值存儲(chǔ),用于共享配置以及服務(wù)發(fā)現(xiàn)。對(duì)于我們而言,意味著注冊(cè)進(jìn)程必須考慮到端口映射。這個(gè)方法被用于管理服務(wù)發(fā)現(xiàn)。如果未指定,將被從的端口映射找到意味著,你必須在運(yùn)行的命令中指定它,比如。為了測(cè)試取消登記,停止一個(gè)容器將立即從中移除。 注:該文由 adetante 編寫,該文的原文地址為 Service discovery with Docker - 2 該文緊接著上篇文...

    madthumb 評(píng)論0 收藏0
  • gitlab-ci坑后感與指北

    摘要:本文的目的最主要是備忘其次是分享療效并不能讓你一下子掌握這只是一個(gè)比較完整的解決方案其他基礎(chǔ)知識(shí)自行補(bǔ)充基調(diào)首先這不是屠龍刀不要奢望一篇文章可以走遍天下這里只是提供一個(gè)具體的落地方案一個(gè)具體的技術(shù)選型階段代碼倉(cāng)庫(kù)關(guān)于代碼倉(cāng)庫(kù)本文選取的方案是 本文的目的:最主要是備忘, 其次是分享 療效: 并不能讓你一下子掌握CI/CD, 這只是一個(gè)比較完整的解決方案,其他基礎(chǔ)知識(shí),自行補(bǔ)充. 基調(diào)...

    jerry 評(píng)論0 收藏0
  • 創(chuàng)建盡可能小的 Docker 容器

    摘要:我一直在尋找盡可能小的容器入手,并且發(fā)現(xiàn)了一個(gè)鏡像是完美的,真正的完美它簡(jiǎn)潔,小巧以及快速。所以這可能就是最小的鏡像。盡管如此,這樣看起來會(huì)很復(fù)雜并且導(dǎo)致容器很大。 注:本文由 Adriaan de Jonge 編寫,本文的原文地址為 Create The Smallest Possible Docker Container 當(dāng)我們?cè)谑褂?Docker 的時(shí)候,你會(huì)很快注意到...

    yankeys 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<