最近正在将自动化代码,移植到docker容器中,以方便打包给客户,顺便就把一些心得写下吧。话不多说,下面进入正题。
1.先普及一下什么是docker
dockers是一个开源的应用容器引擎,让使用者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上。
2.环境搭建正式开始
理解docker是什么了之后,现在开始正式构建吧(本文以Ubuntu16.04为基础搭建)。
2.1 下载docker工具
sudo apt-get install docker (此方法下载不一定是最新的docker,但不影响使用)
2.2下载docker镜像
sudo docker search $(you need images name)
sudo docker pull $(you want to use image name)
2.3搭建符合自己需求的image(注意apt-get源)
(1) 通过dockerfile文件搭建(官方推荐),通过编写dockerfile文件(dockerfile文件如何编写,网上有很多教程,在这里不详叙述)。
编写完成dockerfile,打开ubuntu终端,cd到dockerfile所在目录下,运行如下命令
sudo docker build -t="你的镜像名字:镜像Tag" .
注意命令行里面最后那个".",不要丢了。
(2) 通过commit命令构建,方法如下
sudo docker -it $(you image name) bash 进入docker容器伪终端,然后在终端里面安装自己需要的配件,安装完成后,
退出当前伪终端,运行下面命令完成新镜像搭建。
sudo docker ps -a 查找当前运行的容器 ID
sudo docker commit $(ID) "你的镜像名字:镜像Tag"
2.4 实现GUI运行
使用Xvfb来提虚拟界面显示,使用x11vnc获取Xvfb中显示内容数据,docker容器通过暴露的端口映射到主机的某一个端口,主机
通过VNCviewer就可以查看docker容器中浏览器运行画面。
sudo apt-get installl xvfb
sudo apt-get install x11vnc
Xvfb :99 &
export DISPLAY=:99
x11vnc -storepasswd(设置x11vncserver密码)
x11vnc -forever -usepw -shared -rfbport $(容器暴露端口号) -display $(DISPLAY) &
2.5 运行
至此一个可以观察容器里面浏览器运行的image搭建完毕,运行以下命令用一下吧。
sudo docker run -p 127.0.0.1:5000:5900(image暴露的端口) -it $(imageName:imageTag) bash
sudo vncviewer 127.0.0.1:5000 (输入x11vncserver密码,即可以了)