Docker笔记(一)概念理解及常用命令

简介

本文主要介绍Docker必知概念和必会使用方法,适合想要了解docker技术和学习docker日常使用的读者。

Docker起源—容器

     最早,一台服务器只能运行同类的单一应用,想要增加一个新的应用,需要采购一个新的服务器,为了解决服务器资源严重浪费的问题,虚拟机(VM)技术出现了,但是像VMwave,VisualBox这些虚拟机技术并非十全十美,最大的问题是每个虚拟机都要有一个操作系统,这些OS会占用额外的CPU和RAM—这些资源本可以用于运行更多的应用,同时由于启动速度慢,可移植性差等问题,容器(Container)技术开始发展起来,容器的运行不会再独占操作系统,启动速度快,便于迁移,可以说解决了虚拟机时代的“顽疾”。
     容器技术起源于Linux,是开源社区长期努力持续贡献的产物,但因为早期容器技术过于复杂,并没有真正被大众所接受,直到Docker的出现。

Docker—让容器变得简单

    Docker是一种用Go语言开发的用于创建运行管理编排容器开源软件,是GitHub上Moby开源项目的一部分,位于旧金山的Docker公司是整个Moby项目的维护者。Docker公司致力于“将Docker和容器技术推向全世界”,有一说一,正是Docker这家公司让容器变得简单Linux容器技术才得到了广泛的应用。近几年微软也和Docker公司、社区进行了深入合作,促进Docker和容器技术在Windows平台的发展,Mac系统上也可以用Docker for Mac来运行Linux容器,虽然这是通过在Mac上启动一个轻量级Linux虚拟机来运行Linux容器的,但这种方式至少方便了开发人员在Mac上开发和调试Linux容器。

Docker的几个重要的概念

  • Docker引擎:docker引擎是用于运行和编排容器的基础设施工具,可以认为常说的Docker就是指Docker引擎。Docker引擎主要由以下组件构成:Docker客户端(Docker Client)Docker守护进程(Docker Daemon)containerd以及runc。它们共同负责容器的创建和运行。
  • Docker架构:C/S架构(Client/Server),Client主要负责传递Docker命令,容器的管理,编排等在Server侧(Docker守护进程,containerd等)来完成。从图中可以看到Docker正逐步走向模块化,容器的执行逻辑和运行代码下放给了下层的containerd和runc,Docker daemon成为了更高层的管理者,负责镜像管理,安全特性,RESTful API等。
    *Docker引擎架构
图一 Docker架构
  • Docker镜像:镜像可以理解为构建容器的模板,更进一步可以理解为面向对象中的类(Class),镜像内部由精简的操作系统文件应用运行所必须的文件和依赖包,和运行容器所需的配置参数(环境变量)等组成。镜像对外看是一个只读的文件集合的整体,镜像对内是分层叠加实现的,这里的分层可以理解为构建镜像过程中的不同阶段镜像的不同版本,举一个例子,基于ubuntu18.04构建一个镜像,这就是这个镜像的第一层,然后再装上python包,这就是第二层,再加上安全补丁就是第三层,后续每次做的添加都是一层,最终构建时Docker负责堆叠这些层形成一个整体的镜像。这样松耦合分层堆叠的好处是可以在不同镜像之间共享镜像层,这是由Docker的存储引擎自动实现的。
    (1)镜像体积一般很小,Docker官方Alpine linux镜像只有4MB,Windows镜像会比较大
    (2)从一个镜像可以启动一个或多个容器(传入的参数不同或运行的端口不同),所有的容器没有全部停止或销毁,对应的镜像无法删除
    (3)从面向对象的角度来看,镜像是类,容器是对象,镜像是静态的,容器是运行时的镜像
    (4)镜像仓库服务:Docker镜像存储在镜像仓库服务(Image Registry)中,Docker客户端默认使用官方公共仓库服务
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值