Docker基本知识

Posted rongyupan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker基本知识相关的知识,希望对你有一定的参考价值。

Docker基本知识

Docker是一个开源的应用容器引擎,基于Go 语言开发实现,属于操作系统层面的虚拟化技术。 Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何安装有Docker的电脑上。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似iPhoneapp),更重要的是容器性能开销极低

Docker和虚拟机的区别:技术图片

Docker优势

1、更快速的交付和部署:
对开发和运维员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。
例如:开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。 Docker 容器很轻很快!容器的启动时间是秒级的,大量地节约开发、测试、部署的时间。 节约安装各种开发环境的软件的时间。 解决开发环境和生产环境不一致的问题。

2、更轻松的迁移和扩展:
Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。 这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个。

3、更高的资源利用率:
Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。传统虚拟机方式运行 10 个不同的应用就要起 10 个虚拟机,而Docker 只需要启动 10 个隔离的应用容器即可。

Docker背后的想法是创建软件程序可移植的轻量级容器,让其可以在任何安装了Docker的机器上运行,并不用关心底层操作系统,这点和Java很相似。

Docker项目架构

Docker使用C/S架构(Client-Server)。通过docker客户端连接到Docker服务器上,从而管理Docker服务器里面的镜像和容器,类似于git的架构。

具体的架构可以参见下面这张图,很直观。
技术图片

Docker的基本概念

镜像(Image

Docker 镜像(Image)就是一个只读的模板。例如:一个镜像可以包含一个完整的操作系统环境,里面仅安装了 Apache 或用户需要的其它应用程序。

镜像可以用来创建Docker容器,一个镜像可以创建很多容器。Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。

容器(Container

Docker 利用容器(Container)来运行应用容器是从镜像创建的运行实例

容器可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。

文件系统隔离技术使得Docker成为了一个非常有潜力的虚拟化技术。在容器中可以对文件进行修改、删除、创建。

仓库(Registry

仓库(Repository)是集中存放镜像文件的场所

有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。比如阿里云的Docker加速服务器,就是一个仓库注册服务器,下面有很多不同的仓库和镜像。

仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。国内的公开仓库包括时速云 、网易云等,可以提供大陆用户更稳定快速的访问。当然,用户也可以在本地网络内创建一个私有仓库。

当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。

Docker 仓库的概念跟 Git 类似,注册服务器可以理解为 GitHub 这样的托管服务。

守护进程(Daemon)

Docker Daemon 是服务器组件,以 Linux 后台服务的方式运行,是 Docker 最核心的后台进程,我们也把它称为守护进程。

它负责响应来自 Docker Client 的请求,然后将这些请求翻译成系统调用完成容器管理操作。

该进程会在后台启动一个 API Server ,负责接收由 Docker Client 发送的请求,接收到的请求将通过 Docker Daemon 内部的一个路由分发调度,由具体的函数来执行请求。

运行举例:hello-world

容器启动过程如下:

  1. Docker 客户端执行 docker run 命令。
  2. Docker Daemon 发现本地没有 hello-world 镜像。
  3. Daemon 从 Docker Hub 下载镜像。
  4. 下载完成,镜像 hello-world 被保存到本地。
  5. Docker Daemon 启动容器。





以上是关于Docker基本知识的主要内容,如果未能解决你的问题,请参考以下文章

docker 部署 coredns(内部域名解析)

docker 部署 coredns(内部域名解析)

markdown docker-compose片段

sh Docker片段

android小知识点代码片段

c_cpp Robolution基本代码片段