容器技术(Linux Container,LXC)是一种轻量级的虚拟化技术,容器镜像运行在一个隔离环境中,像集装箱一样,把应用封装起来,应用之间互不干扰,实现进程的隔离。Docker 是常用的一种容器技术,本文将简要介绍Docker及Docker安装方法。
目录
Docker简介
Docker是什么
Docker基于Go语言开发,在2013年正式发布,是一个是用于构建、部署和管理容器化应用程序的开源平台,Docker 允许开发人员将应用程序打包到容器中,容器将应用程序源代码、操作系统库以及所需的依赖结合在一起,可以发布到任何流行的系统中。Docker具有以下优点:
- 使开发人员能够使用简单命令自动化构建、部署、运行、更新容器,缩短开发及运行代码之间的周期,快速交付应用。
- 应用隔离:不同软件运行环境兼容依赖问题,每个容器都可以看作是一个不同的微服务,容器之间互不影响。
- 轻量级,比创建虚拟机快得多
- 运行环境可移植,容器镜像将应用运行环境,包括代码、依赖、资源文件等打包。
Docker与虚拟机的区别
虚拟机(Virtual machine, VM)是对计算机系统的仿真,操作系统(OS)及其应用程序共享单个主机服务器的硬件资源,硬件是虚拟化的,每个虚拟机都有自己的底层操作系统。管理程序(hypervisor)位于硬件和虚拟机之间,负责创建和运行 VM 的软件、固件或硬件。
前面讲过,Docker也是一种虚拟化技术,它只虚拟化操作系统,而不像虚拟机那样虚拟化操作系统和硬件资源。主要区别如下:
- 容器与容器之间只是进程的隔离,通过名称空间隔离,而虚拟机是完全的资源隔离,可能更安全。
- 虚拟机的启动可能需要几分钟,Docker启动只需几秒钟甚至更短。
- 容器共享宿主操作系统的内核,而虚拟机使用完全独立的内核,需虚拟化内核。
- 虚拟机是操作系统和硬件的虚拟化,Docker是操作系统的虚拟化
Docker Engine
Docker Engine 是一个客户机/服务器 (C/S架构) 应用,主要包括三个部分:
- server:守护进程(dockerd 命令),Docker Daemon
- REST API:客户端与守护进程间的通信接口
- CLI:command line interface (CLI) ,命令行接口客户端(docker 命令)
CLI 使用 REST API 与 Docker Daemon 进行通信,实现对Docker Daemon的控制和交互。也可以使用 UNIX 套接字、网络接口进行通信。守护进程构建、运行和管理 Docker 对象(镜像、容器、网络和volumes)。Docker 客户机和守护进程可以在同一个系统上运行,也可以将 Docker 客户机连接到远程 Docker 守护进程。