前言:
之前感觉Docker是一种小型虚拟机,那么docker和KVM虚拟机之间有什么区别、联系?Docker的应用场景是什么呢?
Docker是基于Linux内核docker 的 namespace、cgroup 和 unionFS 三种技术实现,达到容器的环境隔离、资源控制和镜像打包。
Docker比虚拟机:更加轻量级、秒级即可启动、只要操作系统支持LXC技术,有doker服务,就可以跨主机到处运行。
Docker镜像的分层设计思想,给我感觉就是非常灵活,非常适用于To B的产品的部署;
作为老板,我们不需要再考虑如何在没有网络的情况下,把我们的项目部署到不同的客户环境。
作为开发,我们不需要再考虑如何把我们的程序运行到不同的系统环境。
作为运维,我们可以基于1个Centos系统镜像,通过不同Dockerfile的From语法,给开发人员构建出Java运行环境、Python运行环境..各种不同的程序运行环境。
作为测试,我们可以基于1个Python运行环境,通过docker run 的 -v选项,把宿主机中不同的Python项目挂载到不同容器中,进行轮番测试。
一、Docker是什么以及和KVM的区别
1.docker概念?
容器技术是Linux内核层面实现的技术,其目的是对整个系统的UTS、IPC、PID、Network、Mount、User进行划分。
Docker是容器技术吗?不是!知道为什么有些低版本的Linux操作系统不支持docker了吗?因为内核没升级。
LinuX Container(LXC)是给用户提供的可调用内核容器技术的前端工具。
而Docker封装并简化了LXC容器前端调用工具,docker的使用比LXC工具的使用更加简单。
2.docker的设计理念
快速地构建(build)、运输(ship)、运行(running)系统环境
1个容器=1个在前台运行的进程。如果我就想在同1个容器里运行多个进程呢?那就让1个supervisor管理N个进程。
3.docker的架构
docker是C/S 架构 docker server 是服务端,我们执行的docker命令就是操作客户端;
[root@localhost zhanggen]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE ----------------------------------------------------------- [root@localhost zhanggen]# systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Active: active (running) since Wed 2019-03-20 15:19:16 CST; 6min ago Docs: https://docs.docker.com Main PID: 55180 (dockerd) Memory: 75.6M CGroup: /system.slice/docker.service └─55180 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock