91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

關于/var/run/docker.sock

發布時間:2020-07-28 08:14:25 來源:網絡 閱讀:673 作者:Fundebug 欄目:云計算

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

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

  • 譯者: Fundebug

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

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

關于/var/run/docker.sock

舉例

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

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

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

關于/var/run/docker.sock
Portainer通過綁定的/var/run/docker.sock文件與Docker守護進程通信,執行各種管理操作。

Docker守護進程的API

安裝Docker之后,Docker守護進程會監聽Unix域套接字:/var/run/docker.sock。這一點可以通過Docker daemon的配置選項看出來(在ubuntu上執行cat /etc/default/docker ):

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

注: 監聽網絡TCP套接字或者其他套接字需要配置相應的-H選項。

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

運行容器

使用Portainer的UI,可以輕松創建容器。實際上,HTTP請求是通過docker.sock發送給Docker守護進程的。可以通過curl創建容器來說明這一點。使用HTTP接口運行容器需要兩個步驟,先創建容器,然后啟動容器。

1. 創建nginx容器

curl命令通過Unix套接字發送{“Image”:”nginx”}到Docker守護進程的/containers/create接口,這個將會基于Nginx鏡像創建容器并返回容器的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. 啟動nginx容器

使用返回的容器ID,調用/containers/<ID>/start接口,即可啟動新創建的容器。

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

查看已啟動的容器:

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運行容器其實非常簡單。

Docker守護進程的事件流

Docker的API提供了/events接口,可以用于獲取Docker守護進程產生的所有事件流。負載均衡組件(load balancer)組件可以通過它獲取容器的創建/刪除事件,從而動態地更新配置。通過創建一個簡單的容器,我們可以了解如何利用Docker守護進程的事件。

1. 運行alpine容器

下面的命令用于運行容器,并采用交互模式(interactive mode,該模式下會直接進入容器內),同時綁定docker.sock。

docker run -v /var/run/docker.sock:/var/run/docker.sock -ti alpine sh
2. 監聽Docker守護進程的事件流

在alpine容器內,可以通過Docker套接字發送HTTP請求到/events接口。這個命令會一直等待Docker daemon的事件。當新的事件發生時(例如創建了新的容器),會看到輸出信息。

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

基于Nginx鏡像運行容器之后,通過aplpine容器的標準輸出可以觀察到Docker daemon生成的事件。

docker run -p 8080:80 -d nginx

可以觀察到3個事件:

  • 創建容器
  • 連接默認的橋接網絡(bridge network)
  • 啟動容器

結論

希望這些簡單的解釋可以幫助大家理解/var/run/docker.sock文件,并且明白它綁定到容器時有何作用。顯然,真正的應用會使用代碼而不是curl命令給Docker守護進程發送HTTP請求。

注意: 綁定Docker套接字之后,容器的權限會很高,可以控制Docker守護進程。因此,這一點必須謹慎使用,只能用于足夠信任的容器。

關于Fundebug

Fundebug專注于JavaScript、微信小程序、微信小游戲、支付寶小程序、React Native、Node.js和Java實時BUG監控。 自從2016年雙十一正式上線,Fundebug累計處理了7億+錯誤事件,得到了Google、360、金山軟件、百姓網等眾多知名用戶的認可。歡迎免費試用!

關于/var/run/docker.sock

版權聲明

轉載時請注明作者Fundebug以及本文地址:

https://blog.fundebug.com/2017/04/17/about-docker-sock/

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

温宿县| 大渡口区| 平潭县| 怀仁县| 临夏县| 巴里| 米脂县| 商南县| 青铜峡市| 罗甸县| 铜鼓县| 阿克陶县| 白玉县| 惠东县| 灌阳县| 孙吴县| 曲周县| 柘荣县| 定边县| 宣城市| 毕节市| 黄浦区| 仁化县| 屏东县| 深州市| 禹州市| 南宁市| 伽师县| 石嘴山市| 锡林郭勒盟| 白银市| 景东| 乳源| 正宁县| 平塘县| 潢川县| 余干县| 东台市| 通渭县| 漳浦县| 扎赉特旗|