东营网站html5手机资讯网站模板

当前位置: 首页 > news >正文

东营网站,html5手机资讯网站模板,网站内容框架,网站运营与公司简介一. Docker 是什么 Docker与自动化测试及其测试实践 大家都知道虚拟机吧#xff0c;windows 上装个 linux 虚拟机是大部分程序员的常用方案。公司生产环境大多也是虚拟机#xff0c;虚拟机将物理硬件资源虚拟化#xff0c;按需分配和使用#xff0c;虚拟机使用起来和真实操…一. Docker 是什么 Docker与自动化测试及其测试实践 大家都知道虚拟机吧windows 上装个 linux 虚拟机是大部分程序员的常用方案。公司生产环境大多也是虚拟机虚拟机将物理硬件资源虚拟化按需分配和使用虚拟机使用起来和真实操作系统一模一样当废弃不用时直接删除虚拟机文件即可回收资源很方便集中管理。 由于虚拟机非常庞大同时对硬件资源的消耗也大linux 发展出了另一种虚拟化技术即 linux 容器Linux Containers缩写为 LXC它并不像虚拟机那样模拟一个完整的操作系统却提供虚拟机一样的效果。如果说虚拟机是操作系统级别的隔离那么容器就是进程级别的隔离可以想象这种级别隔离的优点无疑是快速的节省资源的。 docker 就是对 linux 容器的封装提供简单实用的用户接口是目前最流行的 linux容器解决方案。 下面是百科的定义 docker 是基于 Go 语言的开源的应用容器引擎并遵从Apache2.0协议docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中然后发布到任何流行的 linux 机器上也可以实现虚拟化。容器是完全使用沙箱机制相互之间不会有任何接口。 如果对软件测试、接口、自动化、性能测试、LR脚本开发、面试经验交流。感兴趣可以加裙485187702群内会有不定期的发放免费的资料链接这些资料都是从各个技术网站搜集、整理出来的如果你有好的学习资料可以私聊发我我会注明出处之后分享给大家。 二. docker 解决什么问题

  1. 解决虚拟机资源消耗问题。 服务器操作系统之上运行着虚拟机虚拟机上运行着客户操作系统客户操作系统之上运行着用户的应用程序一台服务器 80% 的资源开销都花费在了硬件虚拟化和客户机操作系统本身。 如图 1 所示如果采用 docker 容器技术容器上运行着虚拟服务器虚拟服务器中运行着用户的应用程序虚拟服务器和服务器操作系统使用同一内核虚拟服务器的文件系统使用物理服务器的文件系统但做了隔离看上去每个虚拟服务器都有自己独立的文件系统在物理服务器上建立了虚拟网桥设备每个虚拟服务器通过虚拟网桥设备连接网络。虚拟服务器直接使用物理服务器的CPU、内存、硬盘并不对硬件进行虚拟化因此没有硬件虚拟化和客户机操作系统占用的资源消耗每一台虚拟服务器的性能接近于物理服务器性能。 一台普通家用电脑运行一个 Linux 虚拟机可能已经非常卡但是却可以使用 docker 虚拟出几十甚至上百台虚拟的 linux 服务器。如果换成性能强劲的服务器使用 docker 就可以提供私有云服务了。
  2. 快速部署。 软件开发的难题在于环境配置在自己电脑上运行的软件换一台机器可能就无法运行除非保证操作系统的设置正确各种组件和库的正确安装。比如部署一个 Java 开发的 web 系统计算机必须安装 Java 和正确的环境变量可能还需要安装 tomcat、nginx。换台机器部署就要重来一次。 使用 docker 可以将应用程序及依赖打包在一个文件里docker 镜像文件运行这个文件就会启动虚拟服务器在虚拟服务器启动应用程序或服务就像在真实在物理机上运行一样有了 docker就可以一次部署处处运行也可以用于自动化发布。
  3. 提供一次性的环境。 比如本地测试他人的软件、持续集成的时候提供单元测试和构建的环境启动或关闭一个虚拟服务器就像启动或关闭一个进程一样简单和快速。
  4. 提供弹性的云服务。 因为 Docker 容器可以随开随关很适合动态扩容和缩容。
  5. 组建微服务架构。 通过多个容器一台机器可以跑很多个虚拟服务器因此在一台机器上就可以模拟出微服务架构也可以模拟出分布式架构。 三. docker 安装部署与使用 本文介绍 ubuntu 18.04 系统下的安装与使用。其他操作系统请参考官方文档docs.docker.com/。
  6. 安装 docker 引擎 获取最新版本的 Docker 安装包 aaronubuntu:$ wget -qO- https://get.docker.com/ | sh 执行上述命令输入当前用户密码即可自动下载最新版的 docker 安装包并自动安装。 安装完成后有个提示 If you would like to use Docker as a non-root user, you should now consider adding your user to the docker group with something like:sudo usermod -aG docker aaronRemember that you will have to log out and back in for this to take effect!WARNING: Adding a user to the docker group will grant the ability to runcontainers which can be used to obtain root privileges on thedocker host.Refer to https://docs.docker.com/engine/security/security/#docker-daemon-attack-surfacefor more information.当要以非 root 用户可以直接运行 docker 时需要执行 sudo usermod -aG docker aaron
    命令将用户 aaron 添加到 docker 用户组中然后重新登陆否则会报下面的错误 docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.38/containers/create: dial unix /var/run/docker.sock: connect: permission denied. See docker run –help. 执行下列命令启动 docker 引擎 aaronubuntu:
    \( sudo service docker start安装成功后已默认设置开机启动并自动启动如果要手动设置执行下面命令 sudo systemctl enable docker sudo systemctl start docker测试运行 aaronubuntu:~\) sudo docker run hello-world
  7. 使用 docker
  8. 理解 docker 的架构 使用前先了解下 docker 的架构如下图所示 docker 镜象image 是存放在 docker 仓库Registry的文件是用于创建 docker 容器 的模板。 docker 容器 是独立运行的一个或一组应用可以理解为前述介绍的虚拟服务器。 docker 主机 是一个物理或者虚拟的机器用于执行 docker 守护进程和容器。 docker 客户端 通过命令行或者其他工具使用 docker API 与 docker 的守护进程通信。 作为用户我们直接使用的是 docker 客户端。
  9. docker 命令 查看docker 命令的帮助信息 docker –help #docker 全部命令帮助信息 docker COMMAND –help #docker 具体命令COMMAND的帮助信息查看docker 信息 docker info 可以看到容器的池、已用数据大小、总数据大小基本容器大小、当前运行容器数量等。 搜索镜像从网络中搜索别人做好的容器镜像。 docker search ubuntu docker search centos 从这里可以看出有的镜像已经集成了 php、java、ansible 等应用我们也可以制作包含自己应用或服务的镜像文件将此文件传给别人别人即可直接使用 docker 打开容器不需要任何额外的操作也不像虚拟机那样消耗资源即可运行你的应用或服务是不是非常方便 从网络中下载别人做好的容器镜像。 docker pull centos docker pull ubuntu 导入下载好的容器镜像文件 docker load image_xxx.tar 查看镜像 docker images docker images -a 检查镜像 docker inspect ubuntu可以看到容器镜像的基本信息。 删除镜像通过镜像的 id 来指定删除 docker rmi ubuntu 删除全部镜像 docker rmi \((docker images -q) 显示镜像历史 docker history ubuntu 运行容器 Docker容器可以理解为在沙盒中运行的进程这个沙盒包含了该进程运行所必须的资源包括文件系统、系统类库、shell 环境等。但这个沙盒默认是不会运行任何程序的需要在沙盒中运行一个进程来启动某一个容器。这个进程是该容器的唯一进程所以当该进程结束的时候容器也会完全停止。 运行 ubuntu 容器并进入交互式环境 aaronubuntu:~\) docker run -i –nameubuntu1 –hostnameubuntu1 ubuntu /bin/sh cat /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.2 ubuntu1 whoami root uname -a Linux ubuntu1 4.15.0-34-generic #37-Ubuntu SMP Mon Aug 27 15:21:48 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux 上述命令我们创建了一个名字为 ubuntu1 的容器设置容器的主机名为 ubuntu1进入 /bin/sh 命令后我们打印了 hosts 文件的内容查看了内核版本(与本机操作系统版本一致)这里可以使用各种 linux 命令就像在新的操作系统中使用命令一个样。同样的方法我们在新的终端创建一个 ubuntu2 的容器并使用 docker ps 查看正在运行的容器。 输入 exit 退出容器。 docker run -d ubuntu
    会出现一串长的字母数字组成的串为容器的 id请注意容器要有持续运行的进程存在否则容器会很快自动退出。 运行容器并指定MAC地址 docker run -d –namecentos3 –hostnamecentos3 –mac-address02:42:AC:11:00:24 docker-centos6.10-hadoop-spark 列出所有的容器 docker ps -a 列出最近一次启动的容器 docker ps -l 检查容器 docker inspect centos1 可以获取容器的相关信息。 获取容器CID docker inspect -f {{.Id}} centos1 获取容器PID docker inspect -f {{.State.Pid}} centos1 获取容器IP docker inspect -f {{.NetworkSettings.IPAddress}} centos1 获取容器网关 docker inspect -f {{.NetworkSettings.Gateway}} centos1 获取容器 MAC docker inspect -f {{.NetworkSettings.MacAddress}} centos1 查看容器 IP 地址 docker inspect -f {{.NetworkSettings.IPAddress}} centos1连接容器 ssh 容器的 IP 地址 输入密码123456 容器运行后可以通过另一种方式进入容器内部 docker exec -it centos /bin/sh 查看容器运行过程中的日志 docker logs centos1 列出一个容器里面被改变的文件或者目录列表会显示出三种事件A 增加的D 删除的C 被改变的 docker diff centos1 和初始容器镜像项目用户或系统增加/修改/删除了那些目录文件都可以查看到。 查看容器里正在运行的进程 docker top centos1 拷贝容器里的文件/目录到本地服务器 docker cp centos1:/etc/passwd /tmp/ ls /tmp/passwd 通过网络 IP 地址也可以将容器的文件拷贝到服务器这种方式比较方便。 停止容器 docker stop centos1 停止所有容器 docker kill \((docker ps -a -q) 启动容器 docker start centos1 删除单个容器 docker stop centos1 docker rm centos1 删除容器之前要先停止该容器的运行。 删除所有容器 docker kill \)(docker ps -a -q) docker rm $(docker ps -a -q)3. 卷的概念 为了能够保存持久化数据以及共享容器间的数据docker 提出了卷的概念。卷 Volume 就是容器的特定目录该目录下的文件保存在宿主机上而不是容器的文件系统内。 数据卷是一个可供一个或多个容器使用的特殊目录它绕过容器默认的文件系统可以提供很多有用的特性 1数据卷可以在容器之间共享和重用 2对数据卷的修改会立马生效 3对数据卷的更新不会影响镜像 4数据卷默认会一直存在即使容器被删除。 注意数据卷的使用类似于 Linux下对目录进行挂载 mount容器中被指定为挂载点的目录中的文件会隐藏掉能显示看的是挂载的数据卷。 创建、使用数据卷   mkdir -p /root/volume1 mkdir -p /root/volume2 docker run -d -v /volume1 –namecentos5 docker-centos6.10-hadoop-spark docker run -d -v /root/volume1:/volume1 –namecentos6 docker-centos6.10-hadoop-spark docker run -d -v /root/volume1:/volume1 -v /root/volume2:/volume2 –namecentos7 docker-centos6.10-hadoop-spark docker run -d -v /root/volume1:/volume1:ro –namecentos8 docker-centos6.10-hadoop-spark使用docker run命令创建容器指定 -v 标记来创建一个数据卷并挂载到容器里可以挂载多个数据卷可以设置卷的只读属性可以不指定服务器映射的目录由系统自动指定目录通过 docker inspect 来查看映射的路径。 分别进入这些容器查看 /volume1、/volume2目录。 数据卷共享 如果要授权一个容器访问另一个容器的数据卷可以使用-volumes-from 参数来执行。 数据卷容器 如果有一些持续更新的数据需要在容器之间共享最好创建数据卷容器。 数据卷容器其实就是一个正常的容器专门用来提供数据卷供其它容器挂载的。 1创建一个名为 dbdata 的数据卷容器 docker run -d -v /dbdata –name dbdata docker-centos6.10-hadoop-spark 2在其他容器中使用–volumes-from来挂载 dbdata 容器中的数据卷 docker run -d –volumes-from dbdata –name db1 docker-centos6.10-hadoop-spark docker run -d –volumes-from dbdata –name db2 docker-centos6.10-hadoop-spark 这样就可以实现容器之间的数据共享。 分别进入这些容器查看 /volume1、/volume2 目录。
  10. 自制镜像并发布 保存容器修改提交一个新的容器镜像 docker commit centos1 centos111 将现有的容器提交形成一个新的容器镜像使用 docker images 可以看到 centos111 镜像。通过此方法可以创建一个新的容器镜像。 查看镜像 docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEcentos111 latest d691a75ee371 23 minutes ago 501.5 MB 根据新容器镜像创建容器 docker run -d –namecentos111 centos111 查看容器 docker inspect centos111 导出和导入镜像 当需要把一台机器上的镜像迁移到另一台机器的时候需要导出镜像与导入镜像。 机器A docker save docker-centos6.10-hadoop-spark docker-centos6.10-hadoop-spark2.tar 或 docker save -o docker-centos6.10-hadoop-spark docker-centos6.10-hadoop-spark2.tar 使用 scp 命令同其他方式将 docker-centos6.10-hadoop-spark2.tar 拷到机器 B 上 机器B docker load docker-centos6.10-hadoop-spark2.tar 或 docker load -i docker-centos6.10-hadoop-spark2.tar 发布容器镜像 docker push centos6.8-lamp1 将容器发布到网络中。
  11. docker 网络 如果对软件测试、接口测试、自动化测试、性能测试、LR脚本开发、面试经验交流。感兴趣可以175317069群内会有不定期的发放免费的资料链接这些资料都是从各个技术网站搜集、整理出来的如果你有好的学习资料可以私聊发我我会注明出处之后分享给大家。 docker 启动时会在宿主机器上创建一个名为 docker0 的虚拟网络接口。它会从RFC 1918 定义的私有地址中随机选择一个主机不用的地址和子网掩码并将它分配给 docker0默认选择 172.18.0.1/16一个 16 位的子网掩码给容器提供了 65534 个 IP 地址。 docker0 并不是正常的网络接口只是一个在绑定到这上面的其他网卡间自动转发数据包的虚拟以太网桥可以使容器与主机相互通信、容器与容器间相互通信。 docker 每创建一个容器就会创建一对对等接口Peer Interface类似于一个管子的两端在一边可以收到另一边发送的数据包。docker会将对等接口中的一个做为 eth0 接口连接到容器上并使用类似于vethAQI2QT 这样的惟一名称来持有另一个该名称取决于主机的命名空间。通过将所有 veth* 接口绑定到 docker0 桥接网卡上docker 在主机和所有 docker 容器间创建一个共享的虚拟子网。 docker NAT 网络 docker 容器默认通过 nat 方式访问网络docker 启动时会在宿主主机上创建一个名为 docker0 的虚拟网络接口docker0 只是一个在绑定到这上面的其他网卡间自动转发数据包的虚拟以太网桥它可以使容器和主机相互通信、容器与容器间通信。 docker0 的网关地址是172.18.0.1掩码是 16 位提供了 65534 个IP地址。 NAT 方式虚拟器容器可以访问外网宿主机以外但宿主机以外的机器不能访问容器内网。 docker Bridage 网络 docker 容器可以通过 bridge 方式访问网络。 bridge方式虚拟器容器可以访问外网宿主机以外宿主机以外的机器也能访问容器内网。
  12. docker pipework docker 自身的网络功能比较简单不能满足很多复杂的应用场景。因此有很多开源项目用来改善 docker 的网络功能如 pipework、weave、flannel 等。 pipework 是由 docker 的工程师 Jérôme Petazzoni 开发的一个 docker 网络配置工具由 200 多行 shell 实现方便易用。 安装 pipework git clone https://github.com/jpetazzo/pipework cp pipework/pipework /bin/ 或 wget http://172.17.1.240/docker/software/pipework chmod ax pipework cp pipework /bin/ 运行容器 docker run -d –netnone –namecentos9 docker-centos6.10-hadoop-spark 配置容器网络并连到网桥 docker0 上网关在IP地址后面加 指定。 pipework docker0 centos9 172.18.0.10016172.18.0.1
  13. docker 网络端口映射 容器如果使用 docker0 虚拟网络那么容器的网络是 172.17.0.0/16容器可以通过 NAT 方式访问外网但外网不能访问内网。如果容器使用 br0 虚拟网络容器和服务器可以在同一个网络地址段容器可以访问外网外网也可以访问容器网络。 对于使用 docker0 虚拟网络的容器可以通过端口映射的方式让外网访问容器某些端口。 运行容器 docker run -d -p 38022:22 –namecentos10 docker-centos6.10-hadoop-spark 连接容器 ssh localhost -p 38022 在其他服务器上通过访问物理服务器加端口即可访问容器可以一次映射多个端口。 运行容器 docker run -d -p 38022:22 -p 38080:80 –namecentos11 docker-centos6.10-hadoop-spark 其实现原理是在服务器上通过 iptables 转发来实现。当然也可以通过iptables 转发整个容器 IP 地址。 四. 总结 由于容器是进程级别的相比虚拟机有很多优势。 1启动快 容器里面的应用直接就是底层系统的一个进程而不是虚拟机内部的进程。所以启动容器相当于启动本机的一个进程而不是启动一个操作系统速度就快很多。 2资源占用少 容器只占用需要的资源不占用那些没有用到的资源虚拟机由于是完整的操作系统不可避免要占用所有资源。另外多个容器可以共享资源虚拟机都是独享资源。 3体积小 容器只要包含用到的组件即可而虚拟机是整个操作系统的打包所以容器文件比虚拟机文件要小很多。 总之容器有点像轻量级的虚拟机能够提供虚拟化的环境但是成本开销小得多。 最后下面是配套学习资料对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你【100%无套路免费领取】 软件测试面试小程序 被百万人刷爆的软件测试题库谁用谁知道全网最全面试刷题小程序手机就可以刷题地铁上公交上卷起来 8小时传疯大厂面试真题全被大佬整理在这个小程序上了【软件测试建议收藏】 涵盖以下这些面试题板块 1、软件测试基础理论 2、web,app接口功能测试 3、网络 4、数据库 5、linux 6、web,app接口自动化 7、性能测试 8、编程基础9、hr面试题 10、开放性测试题11、安全测试12、计算机基础  全套资料获取方式点击下方小卡片自行领取即可