从0开始学Docker(上)

本文从Docker的概述开始,详细介绍了Docker的基本组成,包括命名空间、控制组、容器和镜像,以及Docker的使用场景。接着,深入探讨了Docker容器的基本操作,如启动交互式和守护式容器、端口映射。最后,讲解了Docker镜像的获取、推送和构建。Docker作为轻量级虚拟化方案,因其高效、便捷的特性,广泛应用于开发、测试和部署场景。
摘要由CSDN通过智能技术生成

引言

一提到小蓝鲸,容器,镜像,宿主机等概念就会扑面而来。好奇心的驱使下就有了这篇快速入门,为的就是避免“拿它当头像,却无法作为网上冲浪的谈资”的尴尬。

文章导读

  • Docker概述(Namespaces,Controller groups,设计目标,使用场景)
  • Docker的基本组成
  • 容器的基本操作(两种容器的构建,端口映射)
  • Docker的镜像与仓库(获取,推送,构建镜像)

一、Docker概述

Docker是什么?我们看下官方是怎么定义的。

Docker 是一个开源的 应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个 可移植的镜像中,然后发布到任何流行的Linux或Windows 机器上,也可以实现 虚拟化

下文会对这些关键词做讲解。

1.1 什么是容器?

容器技术是一种虚拟化的方案。容器虚拟化也就是操作系统级别的虚拟化,只能运行相同或相似内核的操作系统。Docker使用的容器技术依赖于Linux内核的NamespacesCgroups,这两个技术就是为了让操作系统资源被区隔成独立区间

Docker能够将开发的应用程序自动部署到容器。

前面提到,Docker依赖的Linux内核特性

  • Namespaces 命名空间
  • Controller groups(cgroups)控制组

NameSpace

为确保提供的是轻量级虚拟化服务,Docker使用了NameSpace。命名空间提供了系统资源的隔离,资源包括进程、网络、文件系统等。

在同一个Namespace下的进程可以感知彼此的变化,而对其他的Namespace一无所知。让容器置身于独立的系统环境中。

Namespace的种类 :

  • PID(Process ID) 进程隔离
  • NET(Network) 管理网络接口
  • IPC(InterProcess Communication) 管理跨进程通信的访问
  • MNT(Mount) 管理挂载点
  • UTS(Unix Timesharing System) 隔离内核和版本标识

Controller groups

是一种Linux提供用于限制,控制,管理资源的机制。

cgroups的功能:

  • 资源限制:子系统可为进程组设置资源使用上限。
  • 优先级设定:哪些进程组使用更多的资源。
  • 资源计量:计算进程组都使用了多少的系统资源。
  • 资源控制:能够将进程组挂起和恢复。

1.2 虚拟化技术

虚拟化技术就是一种计算机资源管理技术,将内存,网络,CPU等资源进行抽象,让硬件透明,目的是让用户合理地使用操作系统资源。

1.3 虚拟机与容器的区别

图片来源于Docker官网

相比于轻量级的容器,虚拟机会让原本只需要几十兆的应用却要动用几个G的庞然大物(操作系统)去支持。虚拟机需要模拟硬件的行为,会占用更多的资源。因为容器虚拟化了操作系统而不是硬件,导致便携性效率更高。

1.4 Docker的目标

  • 提供简单轻量的建模方式
    只需几分钟就能将容器docker化,启动非常快。同一台宿主机中可以运行好多容器,更加充分合理地利用资源。
  • 职责的逻辑分离
    开发只关注容器中应用程序的运行,运维管理容器。通过保证开发唤醒与部署环境的一致性来实现的。
  • 快速高效的开发声明周期 
    缩短代码从开发,测试,部署的周期。在容器中开发,以容器的形式交付和分发,避免额外的调试部署的开销。
  • 鼓励使用面向服务(微服务)的架构
    推荐单个容器只运行一个程序或进程,形成分布式的应用程序模型,利用单一任务,实现高内聚低耦合。

1.5 Docker的使用场景

  1. 需要开发、测试、部署服务等环境一致
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值