摘要:在技术调研阶段,笔者一开始想的是用的来执行命令,后来查找了相关资料发现,原来本身提供了一套来管理它,因此倒省了很多事情。
一、背景
团队中使用容器比较频繁,但并不是所有人都可以登陆服务器去执行命令,但是又需要用到docker,所以有一个需求通过web来管理docker,而其他语言并不怎么熟悉,后期维护成本比较高,所以笔者采用PHP来管理容器。
在技术调研阶段,笔者一开始想的是用php的system来执行docker命令,后来查找了相关资料发现,原来docker本身提供了一套API来管理它,因此倒省了很多事情。
二、操作概要开启Docker Remote Api
搭建Web-docker
功能验证与测试
三、开启Docker Remote Apidocker提供API支持,但是默认情况下并没有开启,因此需要使用的时候需要把API功能开启,笔者开启的方法选择了socat这个组件,下面介绍一下如何安装及启动socat,这里介绍brew和docker分别的安装方法,读者只需要采用其中一种即可。
参考文档:Docker on Mac上的Remote API 远程控制3.1 使用brew安装socat
brew安装命令如下:
brew install socat
安装完成后,需要启动,命令如下:
socat -d TCP-LISTEN:2375,range=127.0.0.1/32,reuseaddr,fork UNIX:/var/run/docker.sock3.2 使用Docker安装
安装docker
brew cask install docker
启动socat命令
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.sock3.3 测试API开启状态
通过CURL来验证是否开启成功,命令为:
curl localhost:2375/version
当curl输出如下数据,便说明api已经开启成功,返回结果如下:
{ "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 4.1 下载Web-docker
Web-docker是用PHP所开发的docker管理系统,目前支持持批量删除镜像和容器、 镜像创建、镜像标签修改、镜像history与inspect查看; 以及支持容器中的常规操作,比如重启、暂停等;支持容器的重命名、进程查看、容器内文件系统的改变以及inspect的查看;
Web-docker码云地址:https://gitee.com/songboy/Docker-Web
笔者采用了git克隆方式下载,其命令如下:
git clone https://gitee.com/songboy/Docker-Web.git4.2 新增虚拟主机
当代码下载下来之后,笔者想要在浏览器中访问,还需要在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.net4.3 修改配置文件
web-docker的配置文件位于项目根目录的config.php中,笔者需要修改其中的地址部分,将其修改如下内容:
确保DOCKER_URL地址正确,比如笔者搭建在本机,所以使用了127.0.0.1作为地址。
五、功能验证与测试在前面的两个步骤操作完成之后,笔者已经完成了搭建的过程,现在需要来验证功能是否真的搭建成功,笔者这里验证镜像列表、容器列表、镜像创建几个功能。
5.1 Web-docker首页现在笔者打开Web-docker,URL地址如下:
http://webdocker.songboy.net/打开首页之后,配置正确应该可以看到一些统计信息,如下图所示
5.2 验证镜像列表笔者现在通过命令行查看镜像列表当中有哪些镜像,然后再通过浏览器访问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/websafef72835d39e9f 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 在浏览器中验证
点击侧边的镜像,可以在浏览器中看到的镜像列表
在浏览器的镜像列表中笔者看到这里所展示的镜像与命令行返回的一致,说明这个镜像列表正常。
5.3 验证容器列表现在笔者再通过命令行查看容器列表当中有哪些容器,然后再通过浏览器访问Web-docker,查看容器列表是否能对应
命令行查看容器
查看容器镜像列表命令如下:
docker ps -adocker返回的容器列表:
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容器正在运行
5.4 创建镜像现在笔者需要测试一下创建镜像的功能,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 SIZE25253e759d63 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镜像,另外一个便是笔者新创建的镜像了。
5.5 后续Docker-Web目前的功能并不是非常完善,某些功能还处于待添加状态,有兴趣的同学可以贡献一些新功能,遇到也可以和笔者一起交流
作者:汤青松
微信:songboy8888
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/29214.html
摘要:在技术调研阶段,笔者一开始想的是用的来执行命令,后来查找了相关资料发现,原来本身提供了一套来管理它,因此倒省了很多事情。 一、背景 团队中使用容器比较频繁,但并不是所有人都可以登陆服务器去执行命令,但是又需要用到docker,所以有一个需求通过web来管理docker,而其他语言并不怎么熟悉,后期维护成本比较高,所以笔者采用PHP来管理容器。 在技术调研阶段,笔者一开始想的是用php的...
摘要:依赖准备之前编译安装时的参数编写安装脚本环境搭建使用,参考相应官网安装使用清华源安装。搭建环境初始化下载官方备用镜像制作目标是对官方安装自定义插件,参考官方安装。 1、设定目标 a.初始环境: [注:测试主机已设置好软件源,虚拟主机默认是root用户登录] []:~/tmp# lsb_release -a No LSB modules are available. Distributo...
摘要:初始环境注测试主机已设置好软件源,虚拟主机默认是用户登录目标环境一前期准备文件列表选择的是版依赖准备准备环境搭建使用,参考相应官网安装使用清华源安装卸载旧版本 初始环境:[注:测试主机已设置好软件源,虚拟主机默认是root用户登录] []:~/tmp# lsb_release -a No LSB modules are available. Distributor ID: Deb...
阅读 3010·2021-11-24 10:47
阅读 3795·2021-11-02 14:43
阅读 2203·2021-09-26 10:15
阅读 2177·2021-09-08 09:35
阅读 530·2019-08-30 12:45
阅读 2750·2019-08-29 17:04
阅读 3197·2019-08-26 14:05
阅读 1238·2019-08-26 12:10