虚拟机vritual machine是带环境安装的一种解决方案,它可以在一个操作系统中运行另一个操作系统,对于底层系统来说,虚拟机只是一个普通文件,对底层系统上的应用程序毫无感知、毫无影响。在主操作系统上安装虚拟机,虚拟机上安装从操作系统,虚拟出各种硬件,在从操作系统上部署应用。虽然这是带环境安装的一种解决方案,但它在硬件层面虚拟化,资源占用多、启动慢、冗余步骤多。
思考:在主操作系统上想安装三台虚拟机centos7-A,centos7-B,centos7-C,虽然是三台不同的虚拟机,但都跑在centos7上面,可以想方法解决很多资源和成本,复用centos7。
容器是与系统隔离开的一系列进程,将软件用的到的所有资源(不是操作系统全部资源)打包成一个容器,保证了这个容器中的软件在任何的环境中都能运行。docker容器在操作系统层面虚拟化,直接复用本地主机操作系统,为每一个应用提供完全隔离的运行环境,它具有启动速度快、占用体积小的优势。
二者不同之处总结为:
虚拟机技术是虚拟出一套硬件之后,在其上运行一个完整的操作系统,再在系统上运行所需要的程序。
容器内的应用程序没有自己的内核也没有进行硬件虚拟,更加轻便。
每个容器有自己的文件系统,容器之间进程不会互相影响。
Compose容器实例太多了怎么管理,例如容器之间启动的顺序、容器之间网络通信的调用等都需要一个管理者。
Compose负责实现对Docker容器集群的快速编排,管理多个Docker容器组成的一个应用,需要一个YAML格式的配置文件,写好多个容器之间的调用关系,然后只需要一个命令,就可以同时启动或关闭这些容器。
Compose核心概念:一个文件docker-compose.yml;两个要素:服务(应用容器实例)、工程(一组关联的应用容器组成完整的业务单元)
Compose使用的三个步骤:
1.使用Dockerfile定义应用程序的环境
2.compose的yaml文件定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
3.最后,执行 docker-compose up 命令来启动并运行整个应用程序。
Compose常用命令
docker-compose -h #查看帮助
docker-compose up #启动所有docker-compose服务
docker-compose up -d #启动所有docker-compose服务,并后台运行
docker-compose down #停止并删除容器、网络、卷、镜像
docker-compose exec yml里面的服务id #进入容器实例内部
docker-compose ps #展示docker-compose编排过的运行的所有程序
docker-compose top #展示docker-compose编排过的容器进程
docker-compose logs yml里面的服务id #查看容器输出日志
docker-compose config #检查配置
docker-compose config -q #检查配置,有问题才输出
docker-compose restart #重启服务
docker-compose start #启动服务
docker-compose stop #停止服务
yml文件:
version: "3" #版本service: #服务microService: #服务名 image: zzyy_docker:1.6 #镜像 container_name: ms01 #容器名 ports: - "6001:6001" #端口号 volumes: - /app/microService:/data #挂载一个目录或者一个已存在的数据卷容器 networks: - atguigu_net depends_on: #解决依赖和启动先后问题 - redis - mysql