Docker是一种容器技术,容器技术历史如下:
容器技术可以完美地将应用的各种组件封装起来,一次开发,一次封装,多次部署,随时迁移。从而不需要关注底层架构。namespace技术是为了对容器进行网络、通信、文件、权限等对象的隔离。namespace包含了6项隔离:
lxc是第一个完整意义上的容器管理技术,通过lxc可以方便地启动、创建、停止一个容器,还可以通过它来操作容器中的应用,也可以查看容器的运行状态等等。
libcontainer是docker开发的原生的lxc。
execdirver:存储了容器定义的配置信息,libcontainer拿到这些信息后调用底层的namespace等技术来完成容器的创建和管理。
networkdirver:完成docker容器的网络环境的配置,如IP地址、端口、防火墙策略等。
graphdirver:主要负责对容器镜像的管理。
如图所示:
容器的运行是不需要额外安装操作系统的,容器是更加轻量化的技术。 接下来看看详细的对比信息:
容器是承载相关应用的载体;镜像可以由安装了特定应用的容器打包而来,这样可以方便地进行二次下载与运行;仓库是存储镜像的地方。
docker容器由三种状态:
Running Stopped Pauseddocker镜像是一种层级状的结构,如下图所示:
由此可见,有两种创建镜像的方式。
Docker仓库
dockerhub是docker的官方镜像仓库,存放了各种标准的镜像,我们可以使用pull命令下载镜像。还可以定制私有仓库。
build onece,run everywhere.
docker网络有四种模式:bridged、host、container、none。
bridged:表示容器可以与主机、主机上的容器、外部通信。host:只能与主机通信container:只能与主机上的容器通信none:无网络 最常用的是bridge模式。Docker平台架构:
Docker平台技术体系(常用工具):
