聊聊Docker理论知识(二)

一、什么是Dcoker

相信docker是什么大家都已经比较清楚了,网上有很详细的介绍,我这里只是大概描述一下。

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。

Docker通常用于如下场景:

  • web应用的自动化打包和发布;
  • 自动化测试和持续集成、发布;
  • 在服务型环境中部署和调整数据库或其他的后台应用;
  • 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

二、Docker的三大核心概念

1、镜像(Image)

Docker镜像(Image)类似与虚拟机的镜像,可以将他理解为一个面向Docker引擎的只读模板,包含了文件系统。

例如:一个镜像可以完全包含了Ubuntu操作系统环境,可以把它称作一个Ubuntu镜像。镜像也可以安装了Apache应用程序(或其他软件),可以把它称为一个Apache镜像。

镜像是创建Docker容器的基础,通过版本管理和增量的文件系统,Docker提供了一套十分简单的机制来创建和更新现有的镜像。
用户可以从网上下载一个已经做好的应用镜像,并通过命令直接使用。

总之,应用运行是需要环境的,而镜像就是来提供这种环境。

2、容器(Container)

Docker容器(Container)类似于一个轻量级的沙箱子(因为Docker是基于Linux内核的虚拟技术,所以消耗资源十分少),Docker利用容器来运行和隔离应用。

容器是从镜像创建的应用运行实例,可以将其启动、开始、停止、删除,而这些容器都是相互隔离、互不可见的。

可以吧每个容器看作一个简易版的Linux系统环境(包括了root用户权限、进程空间、用户空间和网络空间),以及与运行在其中的应用程序打包而成的应用盒子。

镜像自身是只读的。容器从镜像启动的时候,Docker会在镜像的最上层创建一个可写层,镜像本身将保持不变。就像用ISO装系统之后,ISO并没有什么变化一样。

3、仓库(Repository)

Docker仓库(Repository)类似与代码仓库,是Docker集中存放镜像文件的场所。

有时候会看到有资料将Docker仓库和注册服务器(Registry)混为一谈,并不严格区分。实际上,注册服务器是存放仓库的地方,其上往往存放着多个仓库。每个仓库集中存放某一类镜像,往往包括多个镜像文件,通过不同的标签(tag)来进行区分。例如存放Ubuntu操作系统镜像的仓库,称为Ubuntu仓库,其中可能包括14.04,12.04等不同版本的镜像。

根据存储的镜像公开分享与否,Docker仓库分为公开仓库(Public)和私有仓库(Private)两种形式。

目前,最大的公开仓库是Docker Hub,存放了数量庞大的镜像供用户下载。国内的公开仓库包括Docker Pool等,可以提供稳定的国内访问。山东理工大学开源社区什么时候搞个这个啊,可以提上进程。

如果用户不希望公开分享自己的镜像文件,Docker也支持用户在本地网络内创建一个只能自己访问的私有仓库。

当用户创建了自己的镜像之后就可以使用push明亮将它上传到指定的公有或则私有仓库。这样用户下次在另一台机器上使用该镜像时,只需将其从仓库pull下来就可以了。

Docker利用仓库管理镜像的设计理念甚至命令和git非常相似,也就意味着非常好上手。

三、Docker架构组成

Docker 采用的是 Client/Server 架构。客户端向服务器发送请求,服务器负责构建、运行和分发容器。客户端和服务器可以运行在同一个 Host 上,客户端也可以通过 socket 或 REST API 与远程的服务器通信。

https://docs.docker.com/engine/docker-overview/#union-file-systems

四、Docker的技术组件

Docker 可以运行于任何安装了现代 Linux 内核的 x64 主机上。推荐的内核版本是 3.8 或者更高。Docker 的开销比较低,可以用于服务器、台式机或者笔记本。它包括以下几个部分。

  • 一个原生的 Linux 容器格式,Docker 中称为 libcontainer。
  • Linux 内核的命名空间(namespace),用于隔离文件系统、进程和网络。
  • 文件系统隔离:每个容器都有自己的 root 文件系统。
  • 进程隔离:每个容器都运行在自己的进程环境中。
  • 网络隔离:容器间的虚拟网络接口和IP地址都是分开的。
  • 资源隔离和分组:使用 cgroups(即control group,Linux 的内核特性之一)将 CPU 和内存之类的资源独立分配给每个 Docker 容器。
  • 写时复制(Copy on write):文件系统都是通过写时复制创建的,这就意味着文件系统是分层的、快速的,而且占用磁盘空间更小。
  • 日志:容器产生的STDOUT、STDERR和STDIN这些IO流都会被收集并计入日志。用来进行日志分割和故障排错。
  • 交互式shell:用户可以创建一个伪 tty 终端,将其连接到STDIN,为容器提供一个交互式shell。

五、Docker的安装(Ubuntu)

1、环境选择

因为 Ubuntu 系统的内核版本比较高,而且官方也建议我们使用 Ubuntu,并且各大网站博客的教程很多都是基于 Ubuntu 系统,所以我们这里选择Ubuntu 16.04 进行安装Docker。

  • 运行64位CPU的计算机
  • 运行Linux 3.8或者更高的内核
  • 内核需要支持Device Manager、AUFS、vfs、btrfs、ZFS中的一种
  • 内核必须支持开启cgroup和命名空间namespace功能

https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/#install-using-the-repository

2、允许apt命令HTTPS访问Docker源

sudo apt-get install     apt-transport-https     ca-certificates     curl     software-properties-common

3、添加 Docker 官方的GPG key

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

4、将Docker的源添加到 /etc/apt/sources.list

sudo add-apt-repository   "deb [arch=amd64] https://download.docker.com/linux/ubuntu    $(lsb_release -cs)    stable"

5、安装 Docker

sudo apt-get update
sudo apt-get install docker-ce

6、运行第一个容器

docker run hello-world

五、配置加速器

由于众所周知的一些原因,我们访问 Docker Hub 速度非常慢,为此我们需要添加一个国内的镜像站来作为极速器。

1、阿里云加速器

登录地址https://dev.aliyun.com/search.html ,点击"创建我的容器镜像",找到"Docker Hub 镜像站点",如下图:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://78ssvya7.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

2、DaoCloud 加速器

注册 DaoCloud 账户(支持微信登录),然后访问:https://www.daocloud.io/mirror#accelerator-doc

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://b149d2fd.m.daocloud.io

六、Docker开启远程管理

默认配置下,Docker daemon 只能响应来自本地 Host 的客户端请求。如果要允许远程客户端请求,需要在配置文件中打开 TCP 监听,步骤如下:

1、修改配置文件

编辑配置文件 /etc/systemd/system/multi-user.target.wants/docker.service,在环境变量 ExecStart 后面添加 -H tcp://0.0.0.0,允许来自任意 IP 的客户端连接。

2、重启Docker daemon

systemctl daemon-reload
systemctl restart docker

3、验证

(0)

相关推荐

  • docker容器和虚拟化有什么区别?Linux云计算学习

    Linux容器是与系统其他部分隔离开的一系列进程,从另一个系统镜像运行,并由该镜像提供支持进程所需的全部文件(环境文件).那容器是虚拟化吗?docker容器和虚拟化有什么区别? 容器镜像包含了应用的所 ...

  • Docker入门与简单使用

    前言: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上.近几年来,Docker 在国内发展的如火 ...

  • 9 张图带你深入理解 Docker 架构!

    Docker 的总体架构 Docker 是一个 C/S 模式的架构,后端是一个松耦合架构,模块各司其职.下图是它的总体架构图: 1.用户是使用 Docker Client 与 Docker Daemo ...

  • 看完这篇,Docker你就入门了

    素小暖OSC OSC开源社区 昨天 在计算机技术日新月异的今天, Docker在国内发展的如火如荼,特别是在一线互联网公司,Docker的使用是十分普遍的,在理解docker之前,我们先熟悉两个概念, ...

  • 寻龙点穴理论知识,论穴内作用二十九法

    碰到穴情特殊时,要善于格物致知,通过思考,万疑顿释,显微洞贯,妥善处理,从而妙夺神工天巧. 1.吞法 星体微小,不宜打破,则以吞法作之,其法于结穴之处,穿凿其下成一小洞,以棺送入封土,外复成一假坟,则 ...

  • 你的面包为啥做不好?史上最全的理论知识,打通你的任督二脉!

    做出一个完美的面包绝非易事, 面团对环境有着非常高的要求, 想要精准地控制温度与湿度, 都是需要丰富的理论知识 与长时间的操作经验去做铺垫. 每款面包由于所用的材料有所差异,其作用也会带来不同的成品和 ...

  • 2008年5月人力资源二级考试理论知识试题二

    2008年5月人力资源二级考试理论知识试题二

  • 小学数学理论知识集锦二

    小学数学理论知识集锦二

  • 电工初级理论知识(试卷一)人社局电工证考试

    电工初级理论知识(试卷一) 题目来源:微信公众号[特种作业考试题库],欢迎关注免费做题. 一.单项选择题 1.延长环属于( B ). A.线夹金具 B.联接金具 C.接续金具 D.防护金具 2.每根电 ...

  • 超实用的风水理论知识,值得收藏一看再看!

    杨公风水理论是一个体系,内容由形理法课四大部分:形者形法也.理者理法也.法者方法也.课者择选曰课也. 1.论形法,一般来讲人们多讲峦头,而我称为形法,因形法里包含着峦头,峦头就是寻龙点穴之辩龙.辩穴. ...

  • 计算机核心理论知识全详解

    我们每个程序员或许都有一个梦,那就是成为大牛,我们或许都沉浸在各种框架中,以为框架就是一切,以为应用层才是最重要的,你错了.在当今计算机行业中,会应用是基本素质,如果你懂其原理才能让你在行业中走的更远 ...

  • 超实用的风水理论知识

    杨公风水理论是一个体系,内容由形理法课四大部分:形者形法也.理者理法也.法者方法也.课者择选曰课也. 1.论形法,一般来讲人们多讲峦头,而我称为形法,因形法里包含着峦头,峦头就是寻龙点穴之辩龙.辩穴. ...