参加过我们Python接口自动化测试实战课程的同学都知道,在实战中,我们使用的是一个电商管理系统,基于SpringBoot+MyBatis实现,采用Docker容器化部署。是现阶段比较流行的技术实现的。也是目前大部分公司都在使用的,同时也引入了文档生成工具Swagger-UI,使用Swagger查看接口文档在公司也越来越常见。
Docker得到越来越广泛的应用,那么对于我们测试人员,一些Docker相关知识及命令也要掌握,今天这篇文章,先介绍下Docker相关知识,希望对大家有些帮助。
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上,使用Docker可以更方便的打包、测试及部署应用程序。
1、安装yum-utils:
yum install -y yum-utils device-mapper-persistent-data lvm2
2、为yum源添加docker仓库位置:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3、安装docker:
yum install docker-ce
4、启动docker:
systemctl start docker
在docker hub官网:https://hub.docker.com查看镜像支持的版本,然后下载镜像:比如下载java镜像:
docker pull java:8
下载nginx镜像:
docker pull nginx:1.10
列出镜像:
docker images
删除指定名称镜像:
docker rmi java:8
强制删除指定名称镜像:
docker rmi -f java:8
强制删除所有镜像:
docker rmi -f $(docker images)
新建并启动容器(以nginx为例):
docker run -p 80:80 --name nginx -d nginx:1.10
# -d:表示后台运行
# --name:制定运行后容器的名字为nginx,之后可以通过名字来操作容器
# -p:指定端口映射,格式为:hostPort:containerPort
列出运行中的容器:
docker ps
列出所有容器:
docker ps -a
停止容器:
docker stop $ContainerName(或者$ContainerId)
比如停止nginx:
docker stop nginx 或 docker stop 725e081ad097
强制停止容器:
docker kill $ContainerName(或$ContainerId)
启动已停止的容器:
docker start $ContainerName(或$ContainerId)
进入容器(先查出容器的pid,然后再根据容器的pid进入容器):
# 先查出容器的pid
docker inspect --format "{{.State.Pid}}" $ContainerName(或者$ContainerId)
# 然后再根据容器的pid进入容器
nsenter --target “$pid” --mount --uts --ipc --net --pid
删除指定容器:
docker rm $ContainerName(或$ContainerId)
强制删除所有容器:
docker rm -f $(docker ps -a -q)
查看容器的日志:
docker logs $ContainerName(或$ContainerId)
查看容器的ip地址:
docker inspect --format '{{.NetworkSettings.IPAddress}}' $ContainerName(或$ContainerId)
查看指定容器cpu、内存、网络、io情况:
docker stats $ContainerName(或$ContainerId)
查看所有容器情况:
docker stats -a
进入docker容器内部的bash:
docker exec -it $ContainerName(或$ContainerId) /bin/bash
在 Docker 下我们不用再纠结多套环境运维、管理的问题,也更加不用考虑不同环境之间的差异。Docker 完全可以快速的部署一套清洁的环境,供我们进行各项软件生命周期活动。
很多时候应用会依赖于很多配置,比如数据库、防火墙、队列、缓存等等,Docker 呢,就可以通过打包镜像,将这些配置一起打包到镜像中,也进一步保证了环境的统一。
由于容器不需要进行硬件模拟、也不需要运行完整的操作系统,所以容器的执行速度、内存消耗都要比虚拟机更高效,性能也更好。
传统的环境配置里,生产上的问题往往很难在测试环境重现,让我们在 BUG 复现上会耽误太多的时间,更难定位问题出现的原因。而 Docker 的特殊性就在于可以快递通过镜像复制出现问题的场景,更快速的定位分析问题。同样的,在对于测试与开发的沟通上亦是如此。
传统的持续集成还是停留在应用方向,而配合 Docker,通过 Docerfile 来进行镜像构建,效果更好。
我们经常遇到某些环境的迁移,比如机房的迁移、平台的迁移等等。传统情况下我们的部署、迁移和迁移后的测试是一个非常大的工程,而有了 Docker,基于 Docker 的兼容性,可以很轻松的进行迁移。
由此可见,Docker让我们变得更加高效。好了,Docker篇今天就介绍到这里,希望对你能有所帮助。
试听课:点击左下角“查看原文”