前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker 入门(一)

Docker 入门(一)

作者头像
benny
发布2020-04-22 15:03:12
6280
发布2020-04-22 15:03:12
举报
文章被收录于专栏:程序员的碎碎念

Docker 是什么

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

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

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

Docker 的关键组件

容器(作为虚拟环境运行)

镜像(用来创建容器)

仓库(repository,用来存放镜像)

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 中,镜像是只读的,也就是不可以修改,要修改镜像里面的内容,则会把镜像里对应的内容复制到容器中,在容器中修改,并在下次访问镜像中该内容前先检查容器中有没有该内容,如果有,则使用容器中的,没有则使用镜像中的,也就等于是容器中的内容覆盖了镜像中的对应内容。这就是大名鼎鼎的——写时复制

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

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

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

以上便是 docker 及其使用的最简单的描述。如果某些地方不能理解的,欢迎留言,后续我会补充。

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员的碎碎念 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档