Docker
在自动化测试项目中通常会遇到这样的问题:自己本地的代码coding完成并且调试通过后,上传到代码托管平台,别人拉取下来一运行就各种报错,被人误会写的代码像手上粘屎了一样,非常尴尬,但是通常这一类问题都不是代码的原因,而是运行环境不一致造成的。
为了解决这一问题,leader引入了docker
的概念。本文详细记录搭建docker环境并使用的过程。
文章目录
什么是Docker?
关于这种概念性的东西我也写不出什么花来,相信没有什么比 官方文档 是更详细全面的。
了解更多你可以参考:
我试举一例为便于理解:要运输一批水果和化学物品,用一艘船正好全部装下,但是同时装下会导致水果可能被污染,无法食用。那就分两艘船来运,一艘专门放水果,一艘专门放化学物品,保证各自的质量不受影响的同时也造成了资源浪费。集装箱就很好的解决了这一问题,互相隔离,既保证互不影响又不会造成资源浪费,一艘船全部拉走。Docker就相当于该场景的集装箱,有效解决资源浪费问题。
Docker的安装
Win7 & Win8
因为官方不支持win10以下(2016年前)的微软系统,所以只能通过 docker toolbox
使用Docker。本次教程在win7的基础上进行编写,win8应该大同小异,随缘了。
1. Oracle VM VirtualBox : 虚拟机
2. Kitematic(Alpha) : Docker 界面版本(不推荐使用)
3. Docker QuickstartTerminal : Docker 命令行环境
# Docker toolbox 内还包含:
Docker CLI : 客户端,用来运行docker引擎创建镜像和容器
Docker Machine : 可以在windows命令行中运行docker引擎命令
Docker Compose : 用来运行docker-compose命令
- 点击启动
Docker quickstart
进入命令行,第一次可能会有些慢,启动成功后输入docker --version
验证是否安装成功。
Docker的使用
配置xshell访问Docker
- 默认会创建一台
default
的虚拟机,查看当前虚拟机信息:docker-machine ls
- 新建xshell会话并配置会话信息,主机填写虚拟机的host即可
- 用户名 docker,默认密码 tcuser,连接成功,正常使用
配置国内镜像加速
有时直接从docker仓库拉取镜像会非常慢甚至断开,国内大部分镜像都有,所以需要配置下载地址为国内镜像,以daocould
为例:
- 注册daocould
- 登录后点击加速器按钮
- 上拉页面找到windows的加速地址
- 连接到docker虚拟机,配置镜像加速
docker-machine ssh default # 链接虚拟器,xshell已经连接可忽略该步
sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror=上一步获取的加速地址 |g" /var/lib/boot2docker/profile # 配置加速地址
exit # 退出
docker-machine restart default # 重启虚拟机
镜像使用(以python环境为例)
- 首先查看python的镜像
docker search python:3.7
冒号是指定python版本
- 拉取镜像
docker pull python:3.7
,此处冒号后面的3.7为标签[TAG],区分本地的版本,不加则为latest。因为之前配置国内镜像加速的原因,下载很快,稍等片刻 - 下载完成后查看当前所有镜像
docker images
- 使用指定镜像创建容器
docker run -it python:3.7 /bin/bash
参数使用请参考菜鸟教程,前缀名改变即为创建成功
] - 验证python环境
- 安装vim(非必须)
- 更新apt-get的源,复制如下命令到控制台执行:
mv /etc/apt/sources.list /etc/apt/sources.list.bak && \
echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >/etc/apt/sources.list && \
echo "deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list && \
echo "deb-src http://mirrors.163.com/debian/ jessie main non-free contrib" >>/etc/apt/sources.list && \
echo "deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list
- 安装vim,直接安装可能报错,所以先更新了下
apt-get update && apt-get install vim -y
其他命令:
- 退出镜像
exit
- 删除镜像
docker rmi <images>
- 查看所有容器(包括已停掉的容器)
docker ps -a
- 删除容器
docker container rm <container_id>
配置Pycharm连接docker环境
- 创建一个新的docker环境,进入
settings -> Build,Exection,Deployment -> Docker
,点击‘+’创建docker,默认配置就好,点击确定。 - 在运行页面链接docker,右键镜像可创建容器
- 在
attached console
一栏可输入命令进行交互
- 配置本地代码在docker上运行
settings -> project -> Project Interpreter -> 设置按钮 -> add remote -> docker
点击NEW
勾选Import credentials from Docker Machine
,其余默认设置,点击确定,选择镜像名称,添加解释器后,选择docker环境的解释器即可运行。
注:此处我配置完成后,一直在转圈获取不到Image name
,但是搜了好多教程以及参照官方文档,这块都是直接获取到的,暂未解决(困惑脸:)。