DataWhale组队学习-Docker-Task1
记录Data-WhaleDocker的组队学习过程,在一个多月前的AI Earth人工智能创新挑战赛的组队学习中,由于官方要求要用Docker提交,第一次接触到了Docker,虽然最后照猫画虎的也提交了,但是对于Docker的内部原理一直也不清楚,希望这次组队学习能让自己对Docker有更深入的了解。Task1的任务是安装Docker并了解Docker的基本概念。Docker在上一次组队学习中已经在Win10系统下安装过了,这里主要介绍一下Docker的基本概念。
Docker是什么
关于Docker的介绍,深入理解容器基础概念这篇文章写的很好。Docker是一个虚拟环境容器,可以将你的开发环境、代码、配置文件等一并打包到这个容器中,并发布和应用到任意平台中。容器一般指的是Linux容器,具体来说,Linux容器是与系统其他部分隔离开的一系列进程,是基于操作系统能力的隔离技术。容器具体的使用场景是这样的:我们希望应用程序既能运行在同一主机或集群上,又能彼此隔离,这样它们就不会过度干扰彼此的操作或维护,但由于要运行包、库和其他软件组件,这样就会变得会比较困难。我们可以使用虚拟化技术和容器来解决这个问题,将不同的应用程序隔离开。Docker就是一个升级版的容器, 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。
正如上文提到的,虚拟化技术和Docker容器都可以隔离应用程序,但两者有所不同:
- 虚拟化技术:多个操作系统同时在单个硬件系统上运行,运行的是一个完整的操作系统。虚拟机在宿主机(host)中的OS上面是hypervisor(hypervisor),然后依次建立虚拟机,虚拟化的仓库,然后安装程序。
- Docker容器:Docker可共享同一个操作系统内核,也即Docker容器内的应用进程直接运行于宿主的内核,同时可以将应用进程与系统其他部分隔离开。Docker在宿主机(host)中的OS上面是Docker Engine,然后直接在Doker Engine安装应用。所以很显然,Docker容器比虚拟化技术更轻便,现在也更常用。
镜像,容器与仓库
Docker的三大基本概念就是镜像,容器与仓库。
镜像Image
Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像 不包含 任何动态数据,其内容在构建之后也不会被改变。同时,Docker镜像采用的是分层存储,使得镜像的复用、定制变的更为容易。
容器Container
容器是镜像运行时的实体,相当于是镜像的实例化。容器就是一个进程。容器进程运行在隔离的环境里,可以被创建、启动、停止、删除、暂停等。
仓库Repository
Docker仓库就是存放镜像的地方,可以提供集中的存储、分发镜像的服务。一个 Docker Registry*中可以包含多个仓库;每个仓库可以包含多个 标签(Tag);每个标签对应一个镜像。