什么是Docker
Docker是一种虚拟技术,诞生于2013年,是dotCloud公司研发的开源项目,因为docker这个公司后来改名docker inc,docker的目标是实现轻量级的操作系统虚拟化解决方案。通俗点说,我们想在一台机器上运行多个系统,就产生了虚拟机,当我们想在一个系统运行很多虚拟环境的时候,虚拟机就不行了,这时候就出现了docker,docker基于linux容器技术,再进行了很多封装,用户不用关心容器的管理,可以使操作更加简单。用户使用docker容器就像使用一个快速轻量级的虚拟机一样,非常的简单方便。
Docker跟虚拟机有很多不同之处,容器是在操作系统层面实现虚拟化,直接复用本机
操作系统,而传统虚拟机是在硬件层面实现 见下图:
为什么使用Docker
作为一种虚拟化技术,docker与传统虚拟机相比,具有众多的优势:
更快速的交付和部署
在项目整个过程中,docker都可以发挥自己的优势,开发在开发代码的时候,可以构架一个开发容器,开发完成后,运维人员可以直接使用开发的容器来部署项目,docker可以快速的创建复制容器,docker容器很轻很快,后期测试的时候也可以轻松使用容器来部署测试环境。可以快速的提高整个链条的效率。
高效扩容
因为docker可以在任意的平台上运行,包括物理机,虚拟机,各种云环境,服务器等,所以如果想把一个项目迁移到另外一个平台,非常的简单方便,docker的兼容和轻量特性,可以让你轻松实现服务器的扩容迁移等操作。
更高的资源利用率
因为docker的轻量级特征,一台主机上可以运行上千个docker容器,容器只有在运行项目时,才消耗系统资源,应用的性能很高,而系统的开销却很小,可以保证很高的资源利用率。
Docker的结构
Docker引擎
Docker引擎主要组件如下:
Server是一个常驻进程,用来管理整个docker的交互。
实现客户端和服务端的通信。
镜像image
镜像就是一个环境的只读的模板,一个镜像里面包含了虚拟的操作系统环境,可以安装各种你需要的项目软件,比如tomcat,mysql等等。有了镜像,就可以根据这个镜像来创建docker容器,无论你在什么地方,使用这个镜像都可以复制出同样的容器环境。
仓库:
仓库就是集中放置镜像的场所,主要分为公有仓库和私有仓库,最大的公有仓库就是docker hub,存放了大量成熟的镜像供用户下载使用。国内的有时速云,网易云等,当然你也可以在本地网络创建自己的私有仓库。
容器:
Docker使用容器来运行应用,容器就是镜像运行的运行实例,我们可以通过成熟的镜像来创建一个容器,而后将自己的应用运行到上面。如果在公司内部,你可以安装自己的所需环境的软件,然后整个生成成一个docker镜像,这时候就可以将镜像共享给别人,大家就可以执行镜像,运行出容器,就有了你之前的那个环境,使用起来非常方便。
Docker的基本使用
Docker的常用命令(以mysql为例)
1:获取镜像
可以使用docker pull的命令,比如 docker pull mysql:8.0
2:列出所有镜像
docker images
可以看到你的docker中的下载的镜像
$ docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEmysql:8.0 mysql:8.0 6a77ab6655b9 8 weeks ago 194.6 MB
3:执行镜像
docker run --name mysql8.0 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0
4:查看运行的镜像
docker ps -a
5:进入镜像
进入镜像 运行mysql
命令:docker exec -it mysql8.0 /bin/bash
备注:exec docker进入容器命令 -it 容器中服务别名 /bin/bash 表示命令行模式 与 -d 后台守护进行模式启动 形成两种运行方式
命令:cd /usr/bin
命令:mysql -u root -p
备注:在容器中进入用户目录启动mysql 输入密码连接成功
安装成功
其他就正常操作mysql了。
6:创建镜像
你可以利用 Dockerfile 来创建镜像
docker build
使用 docker commit 来扩展一个镜像比较简单,但是不方便在一个团队中分享。我们可以使用docker build 来创建一个新的镜像。为此,首先需要创建一个 Dockerfile,包含一些如何创建镜像的指令,此内容可以参考网络
编写完成 Dockerfile 后可以使用 docker build 来生成镜像
本文主要是介绍一下docker技术
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!