docker容器与虚拟机的区别

Docker是什么?
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。
Docker是一个重新定义了程序开发测试、交付和部署过程的开放平台,这样可以避免开发环境、测试环境和运维环境不同而导致的额外运维耗损;
Docker则可以称为构建一次,到处运行,这就是Docker提出的"Build once,Run anywhere"

Docker之父Solomon Hykes:Docker就好比传统的货运集装箱。

创建通用容器格式非常重要,单一标准可以促进更有活力的生态系统。
容器与虚拟机的区别
docker容器与虚拟机的区别

虚拟化技术的缺陷
说起虚拟化,大家首先想到的必然是VM一类的虚机。这类虚拟机完美的运行了另一套系统,能够使应用程序,操作系统和硬件三者之间的逻辑不变。
但在惜时如金的现在,这类虚机也面临着一定的问题,比如:启动时间太长,你有没有过在启动虚拟机后,点开其他页面继续操作,过了一分钟才回来的经历?
还有虚拟镜像体积太大(一般都是几十GB)等问题。相比之下,Docker的镜像一般只有二三百兆。并且启动速度超快, Docker的启动时间为毫秒级。
还有一个最大的问题是价格问题,据StackEngine调查分析,有43.8%的企业使用Docker的原因是VMWare太贵。

Docker组件
1.Docker客户端和服务器
Docker是一个客户端-服务器(C/S)架构程序。Docker客户端只需要向Docker服务器或者守护进程发出请求,服务器或者守护进程将完成所有工作并返回结果。Docker提供了一个命令行工具Docker以及一整套RESTful API。你可以在同一台宿主机上运行Docker守护进程和客户端,也可以从本地的Docker客户端连接到运行在另一台宿主机上的远程Docker守护进程。
docker容器与虚拟机的区别
2.Docker镜像
镜像是构建Docker的基石。用户基于镜像来运行自己的容器。镜像也是Docker生命周期中的“构建”部分。镜像是基于联合文件系统的一种层式结构,由一系列指令一步一步构建出来。例如:
添加一个文件;
执行一个命令;
打开一个窗口。
也可以将镜像当作容器的“源代码”。镜像体积很小,非常“便携”,易于分享、存储和更新。
镜像是一组文件的集合,我们从注册中心把镜像下载下来就可以了

3.Registry(注册中心)
Docker用Registry来保存用户构建的镜像。Registry分为公共和私有两种。Docker公司运营公共的Registry叫做Docker Hub。用户可以在Docker Hub注册账号,分享并保存自己的镜像(说明:在Docker Hub下载镜像巨慢,可以自己构建私有的Registry)。

4.Docker容器
Docker可以帮助你构建和部署容器,你只需要把自己的应用程序或者服务打包放进容器即可。容器是基于镜像启动起来的,容器中可以运行一个或多个进程。我们可以认为,镜像是Docker生命周期中的构建或者打包阶段,而容器则是启动或者执行阶段。 容器基于镜像启动,一旦容器启动完成后,我们就可以登录到容器中安装自己需要的软件或者服务。
容器和镜像的关系 类似对象和类的关系

docker的常用命令
安装docker yum install docker
启动docker:systemctl start docker
停止docker:systemctl stop docker
重启docker:systemctl restart docker
查看docker状态:systemctl status docker
列出docker下的所有镜像:docker images
搜索镜像 docker search 镜像名称
拉取镜像 docker pull 镜像名称:版本 docker pull mysql
创建MySQL容器 docker run -di --name pinyougou_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
进入mysql容器 docker exec -it pinyougou_mysql /bin/bash
……自己继续加上其他指令