(一)快速地了解一下 docker

Docker 是什么

是一个能构建应用程序环境和部署应用程序到容器的开源引擎。

我们可以简单地将它理解为一个可以通过设计镜像自动地构建虚拟环境(容器)的工具。

在学习 docker 的运作原理时,我们先了解一些概念:

Docker 的关键组件

容器(作为虚拟环境运行)
镜像(用来创建容器)
仓库(repository,用来存放镜像)
registry(登记处、注册地,用来存放仓库)

这四个概念我用递进的形式列举出来,方便大家理解它们之间的关系。

仓库和 registry

仓库和 registry 是最好理解的,registry 就类似于 GitHub 那样的代码托管平台,GitHub 托管代码,而 registry 则托管镜像,GitHub 一般都是一个项目放在一个仓库,而 docker 的 registry 则是同系列的镜像放在一个仓库,比如 Ubuntu,Ubuntu 有很多个版本,我们就把这些不同版本的 Ubuntu 镜像都放在一个仓库。

容器

容器则好像一个虚拟机,但又比虚拟机要精装很多,不需要虚拟机管理系统和虚拟机操作系统,仅仅包含了我们自己想要的应用程序运行环境,并在 docker 的加持下直接可运行。

镜像

镜像又是怎么样的?比如我们现在有一个 Django 的网站应用,部署到服务器上需要的环境和依赖假设有这些:CentOS7、python3.7、Django、uwsgi、nginx、mysql,我们可以在本地通过 docker 创建并运行一个基于 CentOS 镜像的容器,并在该容器中安装 python3.7、Django、uwsgi、nginx、mysql,安装完这些后,再保存该容器为一个新的镜像,该镜像就好像我们平时安装操作系统的那个镜像一样,可以被移植到其他电脑中创建基于该镜像的容器。

**而镜像的构建则为 docker 中比较核心的内容。**因为 docker 的主要功能之一就是构造出一个个我们想要的镜像,然后发布出来供其他人使用即可实现应用程序环境的自动搭建。

所以很有必要说一下 docker 的牛逼之处——镜像的构建过程。

镜像的构建过程

就拿上面那个 Django 网站应用的例子来说,刚开始,是基于 CentOS镜像创建了一个容器,其实这个容器是分为了两部分,一部分是容器,一部分是镜像,而我们外部看来只是同一个东西——容器。

为什么这样呢?因为在 docker 中,镜像是只读的,也就是不可以修改,要修改镜像里面的内容,则会把镜像里对应的内容复制到容器中,在容器中修改,并在下次访问镜像中该内容前先检查容器中有没有该内容,如果有,则使用容器中的,没有则使用镜像中的,也就等于是容器中的内容覆盖了镜像中的对应内容。这就是大名鼎鼎的——写时复制。

然后我们为该容器安装新的应用 python3.7、Django、uwsgi、nginx、mysql等,其实都是在往我们的容器叠加这些程序的镜像,假如修改 nginx 的配置,其实就是复制了 nginx 镜像中有关配置信息的内容到容器后,再在容器中进行修改和引用。所以,我们看到的容器,其实就是一堆不同程序的镜像叠加在一起并加上一个记录我们的修改信息的可写容器。

有了这个容器,我们就可以在容器中运行应用程序。如果想要把这个运行环境移植到其他电脑上,则把这个容器提交为一个镜像(往哪里提交?往 docker 提交就行了,docker 有个守护进程在处理这些工作),再把该镜像保存到某个可以供别人下载的地方即可,比如 docker hub 上的仓库。

除了直接下载这个镜像,docker 还提供了通过 Dockerfile 的方式创建镜像。因为我们在上述创建镜像的过程中,无非就是一行一行的命令使得环境搭建起来了,而我们可以把这些命令写到一个文件——Dockerfile 中,让 docker 再自动按序执行这个 Dockerfile 中的命令就可以构建相同的镜像了。

了解 docker 的大致原理后,我们便要开始下载安装 docker 和 学习基本的使用命令了。

下载安装都很简单,看官方文档或者看菜鸟教程就可以了,菜鸟教程差不多就是官方文档的中文版了。

以上便是 docker 及其使用的最简单的描述。如果某些地方不能理解的,欢迎留言,我会及时补充,也十分非常特别真的希望大家能关注一下我的微信公众号:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值