关于Docker在测试方面的应用

网友投稿 252 2022-10-24

关于Docker在测试方面的应用

Docker 火了很长一段时间了,前段时间简单的学习和试玩了一下子,发现他对测试很有价值,觉得有必要再次深入研究。   简单来看,什么是Docker? Docker的英文本意是码头工人,也就是搬运工,这种搬运工搬运的是集装箱(Container),集装箱里面装的可不是商品货物,而是任意类型的App,Docker把App(叫Payload)装在Container内,通过Linux Container技术的包装将App变成一种标准化的、可移植的、自管理的组件,这种组件可以在你的笔记本上开发、调试、运行,最终非常方便和一致地运行在生产环境下的各种云机房和服务器上。 Docker的核心底层技术是LXC(Linux Container),Docker在其上面加了薄薄的一层,添加了许多有用的功能。 Docker提供了一种可移植的配置标准化机制,允许你一致性地在不同的机器上运行同一个Container;而LXC本身可能因为不同机器的不同配置而无法方便地移植运行;Docker以App为中心,为应用的部署做了很多优化,而LXC的帮助脚本主要是聚焦于如何机器启动地更快和耗更少的内存;Docker为App提供了一种自动化构建机制(Dockerfile),包括打包,基础设施依赖管理和安装等等;Docker提供了一种类似git的Container版本化的机制,允许你对你创建过的容器进行版本管理,依靠这种机制,你还可以下载别人创建的Container,甚至像git那样进行合并;Docker Container是可重用的,依赖于版本化机制,你很容易重用别人的Container(叫Image),作为基础版本进行扩展;Docker Container是可共享的,有点类似github一样,Docker有自己的INDEX,你可以创建自己的Docker用户并上传和下载Docker Image;Docker提供了很多的工具链,形成了一个生态系统;这些工具的目标是自动化、个性化和集成化,包括对PAAS平台的支持等; Docker 有什么用呢? 从运维的角度来说,你的应用程序一般都需要特定版本的操作系统、应用服务器、 JDK 、数据库服务器,还可能需要调整配置文件和其他一些依赖关系。应用程序可能需要绑定到指定的端口和一定量的内存。这些运行应用程序所需要的组件和配置就是所说的应用程序操作系统。你当然可以写一个包含下载和安装这些组件的安装脚本。 Docker 简化了这个流程,通过创建一个包含应用程序和基础设施的镜像(image),当作一个组件进行管理。这些镜像可以创建 Docker 容器(container),容器运行在 Docker 提供的容器虚拟化平台上。Docker 的构成Docker 有两个主要组件:Docker:开源的容器虚拟化平台Docker Hub:共享和管理 Docker 镜像的 Saas 平台 Docker 采用 Linux 容器 来提供隔离、沙箱、复制、资源限制、快照和其他的一些优势。镜像是 Docker 的“构建组件”,也是应用操作系统的只读模版。容器是从镜像创建出来的运行状态,是 Docker 的“运行组件”。容器是可以运行、启动、停止、移动和删除的。镜像保存的仓库是 Docker 的“分发组件”。Docker的镜像与容器Docker 按启动顺序包含两个组件:服务端:运行在宿主机上,负责构建、运行和分发 Docker 容器等重要工作客户端:Docker 二进制程序,接收用户的命令和服务程序进行通信客户端可以和服务端运行在一台主机上,也可以在不同的主机上。服务端需要用 pull 命令从仓库中拉一个镜像下来。服务端可以从 Docker Hub 或者其他配置的仓库中下载镜像。服务端主机可以从仓库中下载和安装多个镜像。然后客户端就可以用 run命令 来启动容器。客户端与服务端通过socket或者REST API 进行通信。Docker 的安装在 CentOS 中安装 Docker:sudo yum -y install docker-io    #安装 dockersudo service docker start        #启动 docker 服务sudo chkconfig docker on         #如果需要 docker 服务为自启动 在Ubuntu/Debian中安装 Docker:sudo apt-get udpatesudo apt-get install docker.iosudo ln -sf /usr/bin/docker.io /usr/local/bin/dockersudo sed -i '$acomplete -F _docker docker' /etc/bash_completion.d/docker.io     #命令自动补全其它操作系统的安装可以查看官方文档。Docker的运行与退出在了解了Image和Container的概念后,我们可以开始下载一个Image,Docker的好处就是提供了一个类似github的Image仓库管理,你可以非常方便pull别人的Image下来运行,例如,我们可以下载一个CentOS Image:sudo docker pull centos:centos6这里 centos6是一个 tag,类似于 Git 的 tag,能过它来确定下载的 CentOS 的版本。下载完成后,执行docker images命令来列出你已经下载的 images。下载之后,我们通过命令行来运行一个容器,命令很简单,例如我们想执行一个 shell 终端:sudo docker run -i -t centos:centos6 /bin/bash 默认情况下,docker 容器是不提供交互shell 的,也不提供标准输入。可以指定-i选项来提供交互,提供-t 选项来分配一个伪终端。在 Shell 中你可以做你想做的任意操作,安装软件,编写程序,运行命令等。当你操作后想将结果保存,这时可以用 docker commit 命令将 Container 提交成 Image。哦,假如你这里还处在交互 shell 中,记得先使用 Ctrl+d 或者 exit 命令退出。sudo docker ps -a 首先执行 ps 命令查看容器ID然后使用 commit 命令将容器进行保存sudo docker commit 851d custom/centos-aliyun容器提交后,执行sudo docker images就能看到刚才提交的容器。 docker端口映射经常要在 Docker 中开启某些网络服务,需要将 docker 虚拟机的网络端口与宿主机端口连接起来。比如将 docker 中的8080端口映射到宿主机的80端口上:sudo docker run -p 80:8080 custom/tomcat 宿主机硬盘挂载这也是常用功能之一,尤其是服务需要记录日志、保存文件等时候。sudo docker run -i -t -v /host/dir:/container/path ubuntu /bin/bash以上是把宿主机器的/host/dir 挂载到/container/path 路径上。 容器间共享存储主要借助于-volumes-from参数实现COUCH1=$(sudo docker run -d -v /var/lib/couchdb shykes/couchdb:2013-05-03)COUCH2=$(sudo docker run -d -volumes-from $COUCH1 shykes/couchdb:2013-05-03)这个特性,让人有许多想像空间,比如,一个容器实例用于 Web 存储,另外两个实例用于 Web 请求,实现读写分离。镜像的导入/导出方法1: 使用 save/load 命令来实现镜像的导入导出sudo docker save IMAGENAME | bzip2 -9 -c>img.tar.bz2    #或者你喜欢 tar.gzsudo docker save IMAGENAME > imageName.tar.gz镜像导入功能使用 load 命令解压导入即可sudo docker load < imageName.tar.gz        # 喜欢压缩的同学    bzip2 -d -c

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:常用的几种控制接口
下一篇:USB-C接口:可瞻望的未来
相关文章

 发表评论

暂时没有评论,来抢沙发吧~