• home > tools > Virtual > VMware >

    Docker使用——Docker与VM的区别

    Author:zhoulujun@live.cn Date:

    Docker有着小巧、迁移部署快速、运行高效等特点,但隔离性比服务器虚拟化差。服务器虚拟化其拥有完全独立(隔离)的空间,属于不同的客户(虚拟机所有者

    引自:http://zhenhua-lee.github.io/container/docker.html

    Docker与VM的区别

    VM在物理机的操作系统上建立了一个中间软件层 hypervisor,利用物理机资源,虚拟出多个硬件资源,这些新的虚拟硬件环境、安装的操作系统、相应软件便构成了一台虚拟机

    而 Docker 对硬件资源,在不同docker container上做了隔离,使得每个docker container拥有不同的环境,同时可以共享硬件资源

    20180711094611205.png

    Startup:

            Docker在宿主机器的操作系统上创建Docker引擎,直接在宿主主机的操作系统上调用硬件资源,而不是虚拟化操作系统和硬件资源,所以操作速度快。

            这个其实安装一个ubuntu的虚拟机和拉取一个Docker的ubuntu镜像文件,运行一下就知道了,区别很明显,虚拟机开一下大概得2分多钟,而Docker只需要2秒钟。

    Integration:

    Docker有着小巧、迁移部署快速、运行高效等特点,但隔离性比服务器虚拟化差:不同的集装箱属于不同的运单(Docker上运行不同的应用实例),相互独立(隔离)。但由同一个库管人员管理(主机操作系统内核),因此通过库管人员可以看到所有集装箱的相关信息(因为共享操作系统内核,因此相关信息会共享)。服务器虚拟化就好比在码头上(物理主机及虚拟化层),建立了多个独立的“小码头”—仓库(虚拟机)。其拥有完全独立(隔离)的空间,属于不同的客户(虚拟机所有者)。每个仓库有各自的库管人员(当前虚拟机的操作系统内核),无法管理其它仓库。不存在信息共享的情况

    日常使用的基本概念

    核心功能简答介绍:

    • Docker是C/S模式

    • images:docker镜像,是Docker run的原材料

    • container: Docker运行的内容,是独立存在的

    • data volumes: 通过数据挂载的方式,实现数据共享

    • network:用户容器与外部、容器之间的通信,常用的方法有端口映射、link等

    使用流程

    基本操作

    • docker version: 查看基本版本信息,包括client、server

    关于镜像的基本操作

    • docker search: 默认在 https://hub.docker.com 中查询镜像,当然可以修改registry

    • docker pull: 镜像拉取 docker pull imageName:version

    • docker push: 镜像提交

    • docker images: 查看本地镜像

    • docker rmi: 删除本地镜像

    • docker build:利用 Dockerfile 制作镜像,例如 docker build -t newImageName -f dockerFile [contextPath]

    • docker commit: 基于运行的 container 制作镜像

    关于容器的基本操作

    • docker run

      • 镜像的运行

      • d: 在后台运行

      • v: 用户数据挂载

      • p: 端口映射,实现外部与容器之间的通信

      • rm: 容器推出时,直接删除容器

      • i: 交互式的方式

      • t: 在容器中启动一个终端

    • docker ps

      • 查询当前存在的容器

      • a: 列出所有容器

      • q: 仅出 container id

    • dock exec: 在容器中执行命名,例如可以使用 docker exec -it containerId /bin/bash 进入到容器内部

    • docker stop: 停止容器的运行

    • docker restart: 重新启动容器的运行

    • docker rm: 容器删除

    DockerFile

    # 指定基础镜像
    FROM NODE:10.12
    
    ## 从本地 copy 文件到镜像中
    COPY ./ /data/my-node/
    
    ## 切换 container 的工作目录
    WORKDIR /data/my/node
    
    ## 执行命令
    RUN npm install
    
    ## 容器的启动命名
    ENTRYPOINT ["node", "./index.js"]

    参考文章:


    Docker与VM虚拟机的区别以及Docker的特点

    使用Docker实现丝般顺滑的持续集成

    Docker&VM】docker容器与虚拟机有什么区别?

    http://zhenhua-lee.github.io/container/docker.html


    转载本站文章《Docker使用——Docker与VM的区别》,
    请注明出处:https://www.zhoulujun.cn/html/tools/Virtual/VMware/2016_0426_7789.html