團隊中使用容器比較頻繁,但並非全部人均可以登錄服務器去執行命令,可是又須要用到docker,因此有一個需求經過web來管理docker,而其餘語言並不怎麼熟悉,後期維護成本比較高,因此筆者採用PHP來管理容器。php
在技術調研階段,筆者一開始想的是用php的system來執行docker命令,後來查找了相關資料發現,原來docker自己提供了一套API來管理它,所以倒省了不少事情。html
docker提供API支持,可是默認狀況下並無開啓,所以須要使用的時候須要把API功能開啓,筆者開啓的方法選擇了socat這個組件,下面介紹一下如何安裝及啓動socat,這裏介紹brew和docker分別的安裝方法,讀者只須要採用其中一種便可。mysql
參考文檔: Docker on Mac上的Remote API 遠程控制
brew安裝命令以下:linux
brew install socat
安裝完成後,須要啓動,命令以下:nginx
socat -d TCP-LISTEN:2375,range=127.0.0.1/32,reuseaddr,fork UNIX:/var/run/docker.sock
安裝dockergit
brew cask install docker
啓動socat命令web
docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 2375:2375 bobrik/socat TCP4-LISTEN:2375,fork,reuseaddr UNIX-CONNECT:/var/run/docker.sock
經過CURL來驗證是否開啓成功,命令爲:sql
curl localhost:2375/version
當curl輸出以下數據,便說明api已經開啓成功,返回結果以下:docker
{ "Platform": { "Name": "" }, "Components": [{ "Name": "Engine", "Version": "18.03.1-ce", "Details": { "ApiVersion": "1.37", "Arch": "amd64", "BuildTime": "2018-04-26T07:22:38.000000000+00:00", "Experimental": "true", "GitCommit": "9ee9f40", "GoVersion": "go1.9.5", "KernelVersion": "4.9.87-linuxkit-aufs", "MinAPIVersion": "1.12", "Os": "linux" } }], "Version": "18.03.1-ce", "ApiVersion": "1.37", "MinAPIVersion": "1.12", "GitCommit": "9ee9f40", "GoVersion": "go1.9.5", "Os": "linux", "Arch": "amd64", "KernelVersion": "4.9.87-linuxkit-aufs", "Experimental": true, "BuildTime": "2018-04-26T07:22:38.000000000+00:00" }
Web-docker是用PHP所開發的docker管理系統,目前支持持批量刪除鏡像和容器、 鏡像建立、鏡像標籤修改、鏡像history與inspect查看; 以及支持容器中的常規操做,好比重啓、暫停等;支持容器的重命名、進程查看、容器內文件系統的改變以及inspect的查看;ubuntu
Web-docker碼雲地址:https://gitee.com/songboy/Docker-Web
筆者採用了git克隆方式下載,其命令以下:
git clone https://gitee.com/songboy/Docker-Web.git
當代碼下載下來以後,筆者想要在瀏覽器中訪問,還須要在nginx配置文件中爲其建立一個虛擬主機,其配置文件以下,讀者需注意修改項目路徑
server { listen 80; server_name webdocker.songboy.net; root /Users/song/mycode/work/Docker-Web; location / { index index.html index.htm index.php; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
筆者增長了一個主機後,還須要將域名解析到本地,因此增長一個本地host記錄,mac系統中存放於 /etc/hosts ,筆者須要在其尾部增長一行
127.0.0.1 webdocker.songboy.net
web-docker的配置文件位於項目根目錄的config.php中,筆者須要修改其中的地址部分,將其修改以下內容:
<?php date_default_timezone_set('UTC'); define('ROOT_PATH',dirname(__FILE__)); define('DOCKER_URL','http://127.0.0.1:2375'); spl_autoload_register(function($className){ include_once 'libs/'.$className.'.class.php'; });
確保DOCKER_URL地址正確,好比筆者搭建在本機,因此使用了127.0.0.1做爲地址。
在前面的兩個步驟操做完成以後,筆者已經完成了搭建的過程,如今須要來驗證功能是否真的搭建成功,筆者這裏驗證鏡像列表、容器列表、鏡像建立幾個功能。
如今筆者打開Web-docker,URL地址以下:
http://webdocker.songboy.net/
打開首頁以後,配置正確應該能夠看到一些統計信息,以下圖所示
筆者如今經過命令行查看鏡像列表當中有哪些鏡像,而後再經過瀏覽器訪問Web-docker,查看鏡像列表是否能對應
docker images
以下信息能夠看到docker當前有10個鏡像
REPOSITORY TAG IMAGE ID CREATED SIZE registry.cn-hangzhou.aliyuncs.com/daxia/websafe v3 bfae72172ad6 5 days ago 2.13GB registry.cn-hangzhou.aliyuncs.com/daxia/websafe v2 d18bb3c1ec4f 5 days ago 2.13GB registry.cn-hangzhou.aliyuncs.com/daxia/websafe <none> f72835d39e9f 7 days ago 2.13GB registry.cn-hangzhou.aliyuncs.com/daxia/websafe lnmp f6da484f22c0 7 days ago 1.95GB ubuntu latest 735f80812f90 2 weeks ago 83.5MB registry.cn-hangzhou.aliyuncs.com/daxia/ubuntu18_lnmp 1 8801b0f09382 5 weeks ago 334MB registry.cn-hangzhou.aliyuncs.com/daxia/ubuntu18_lnmp1.5 2 9a867670312d 5 weeks ago 1.23GB registry.cn-hangzhou.aliyuncs.com/max/lnmp1.4-php7.1-centos6.7 latest 250c17daece3 11 months ago 1.1GB zzhpeng/lnmp1.4 latest b2ab0ed558bb 17 months ago 602MB bobrik/socat latest e617a56c238e 3 years ago 6.95MB
點擊側邊的鏡像,能夠在瀏覽器中看到的鏡像列表
在瀏覽器的鏡像列表中筆者看到這裏所展現的鏡像與命令行返回的一致,說明這個鏡像列表正常。
如今筆者再經過命令行查看容器列表當中有哪些容器,而後再經過瀏覽器訪問Web-docker,查看容器列表是否能對應
查看容器鏡像列表命令以下:
docker ps -a
docker返回的容器列表:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1002d82da57d bobrik/socat "socat TCP4-LISTEN:2…" 14 minutes ago Up 14 minutes 0.0.0.0:2375->2375/tcp vibrant_pasteur
在Web-docker中,點擊容器列表,變能夠看到容器列表,以下圖所示
對比以後能夠看到容器返回的容器列表與瀏覽器中的列表一致,同時也看到了筆者啓動socat容器正在運行
如今筆者須要測試一下建立鏡像的功能,Web-docker支持使用dockerfile語法構建鏡像,在鏡像列表中,有一個大文本框,能夠把dockerfile代碼粘貼進去,以下代碼:
FROM ubuntu:18.04 MAINTAINER tangqingsong # 使用國內源 ADD sources.list /etc/apt/ # 安裝服務 RUN apt-get -y update RUN apt-get -y install php php-mysqlnd mysql-server wget unzip
查看鏡像列表命令:
docker images
當命令執行完成以後docker返回的前4個結果以下:
REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> 25253e759d63 5 seconds ago 83.5MB ubuntu 18.04 735f80812f90 2 weeks ago 83.5MB ubuntu latest 735f80812f90 2 weeks ago 83.5MB bobrik/socat latest e617a56c238e 3 years ago 6.95MB
在命令行當中能看出增長,那麼如今一樣經過Web-docker來查看是否有變化,以下圖
在圖中能夠看到鏡像數量增長了兩個,一個是base鏡像,另一個即是筆者新建立的鏡像了。
Docker-Web目前的功能並非很是完善,某些功能還處於待添加狀態,有興趣的同窗能夠貢獻一些新功能,遇到也能夠和筆者一塊兒交流
做者:湯青松
微信:songboy8888