Docker的绝对初学者指南

154 阅读8分钟

Docker是一个开源软件平台,可以帮助你简化创建、管理、运行和分发应用程序的过程。通过Docker,你可以将你的应用程序连同其所有的依赖关系打包成一个容器。容器允许你的应用程序轻松和统一地部署。 今天,我们将深入了解Docker,讨论容器、模块、关键术语等。

什么是Docker?

Docker是一个开源软件,可以在Linux和Windows上运行。通过Docker,你可以将你的应用程序和它的依赖性一起打包成容器。Docker允许你将你的应用程序与你的基础设施分开。

该公司开始时是一个建立在Linux容器上的平台即服务。为了帮助制作和管理容器,他们建立了一个内部工具,他们昵称为 "Docker",这就是这项技术的诞生过程。第一个版本是在2013年发布的。

今天,Docker主导了市场。许多公司使用Docker来简化构建、运行和管理应用程序的过程。它已经改变了公司进行应用开发的方式。Docker对安装它的计算机的操作系统进行了虚拟化,这使它具有极其便携的功能。

Docker被用于:

  • DevOps

  • 软件

  • IT服务

  • 人员配置和招聘

  • 金融

  • 医疗保健

  • 零售业

  • 等等。

在我们讨论其他事情之前,让我们先谈谈Docker容器。

容器是什么?

很久以来,公司一直在使用容器技术来解决虚拟机的弱点。我们可以把容器看作是更轻量级的虚拟机版本。容器和虚拟机的重要区别在于,容器不需要自己的操作系统。一个主机上的所有容器都共享该主机的操作系统,这释放了大量的系统资源。

现在被称为现代容器的东西是从Linux容器(LXC)开始的。许多贡献者,包括谷歌,帮助将容器相关的技术引入Linux内核。没有这些贡献,我们就不会有今天这样丰富的容器生态系统。

在Docker出现之前,容器化还不是很容易获得。Docker容器在应用层创建了一个抽象的概念。容器将你的应用程序和它的容器依赖物与它运行所需的一切打包,包括:

  • 操作系统
  • 应用程序代码
  • 运行时间
  • 系统工具
  • 系统库
  • 等。

Docker模块

Docker提供了许多不同的模块和插件。让我们来看看一些最流行的模块。

Docker Compose

docker-compose 允许你定义和运行多容器应用程序。有了Compose,你可以使用一个 文件来配置你的应用程序的服务,并在Docker守护进程或Docker Swarm上协调容器。你可以把它看作是一个自动化的多容器工作流程。Docker Compose非常适用于开发、测试、CI工作流程和暂存环境。YAML

Docker Machine

docker-machine 允许你将你的容器化应用程序部署到云中。通过Docker Machine,你可以创建一个远程虚拟机并管理你的容器。它是创建部署环境和管理在你的应用程序上运行的微服务的一个伟大工具。它可以与流行的云服务一起使用,如AWS和微软Azure。

Docker堆栈

Docker stack允许你用Docker Swarm管理一个Docker容器集群。Docker stack被嵌入到Docker命令行界面(CLI)中。通过堆栈,你可以在一个文件中描述多个服务。它消除了维护bash脚本来定义服务的需要。

Docker Swarm

Docker Swarm允许你在不同的主机上管理多个容器。换句话说,它是一个容器编排工具。通过Swarm,你可以把多个Docker主机变成一个单一的主机。

Docker与Kubernetes

把Docker和Kubernetes混为一谈是非常常见的,所以让我们花点时间看看这两种技术之间的区别。这些技术可以很好地互补,而且它们经常一起使用。 我们已经在本文中探讨了Docker,但让我们强调一些关键点。

Docker

Docker是一个容器化平台。我们可以使用Docker来构建和运行容器。Docker引擎是一个运行环境,允许你在开发机器上构建和运行容器。运行应用程序可能很复杂,特别是当你有大量的容器部署在不同的服务器上时。要确定协调和安排多个容器的最佳方式,弄清它们之间的通信方式,并决定如何扩展你的容器,可能会很困难。这就是Kubernetes的用武之地。

Kubernetes

Kubernetes是一个开源的协调软件,用于Docker等容器化平台。它有一个控制容器操作的API。Kubernetes允许你组织一个虚拟机集群,并安排容器在这些虚拟机上运行。通过Kubernetes,你可以运行Docker容器并管理你的容器化应用。你的容器被分组为pod,你可以随意扩展和管理这些pod。

等等,Kubernetes和Docker Swarm之间有什么区别?

正如我们上面讨论的,Docker Swarm允许你在不同的主机上管理多个容器。

Docker Swarm和Kubernetes之间的区别是,Kubernetes比Docker Swarm更全面。它跨集群运行,而Docker在一个节点上运行。Kubernetes的pod是跨节点划分的,以确保可用性。

Docker词汇指南

让我们来看看在使用该平台时你会看到的一些常见的Docker术语:

  • 控制组(Cgroups):控制组允许你在系统上运行的进程中分配资源。

  • 容器镜像:Docker镜像是你用来在Docker容器中执行代码的文件。

  • Docker build:docker build 是一个命令,你用来从Docker文件中构建一个镜像。

  • Docker引擎:Docker引擎是Docker的核心产品,它包括其守护程序和CLI。它有一个API用于与Docker守护程序进行交互。

  • Dockerfile:Dockerfile是一个基于文本的文件,包含了构建Docker镜像的指令。

  • Docker Hub:Docker Hub是一项服务,允许你在你的组织中寻找和分享容器。

  • Docker注册表:Docker Registry允许你存储和分发命名的Docker镜像。注册处被组织成储存库,它们保存着不同镜像的所有版本。

  • Docker运行:运行命令允许你从一个指定的镜像中创建一个容器,并使用给定的命令启动该容器。

  • 命名空间:命名空间是在你运行一个容器时创建的。它们提供了一个隔离层,因为容器的每个元素都在不同的命名空间中运行。

  • Pull:docker pull 是一个允许你下载一个特定镜像或一组镜像的命令。

  • 存储库(repo):Docker资源库允许你与他人分享容器镜像。这些镜像被存储为标签。

  • 标签:Docker标签就像标签一样,你可以给任何完成的构建分配标签。

  • 联合文件系统(AUFS):联合文件系统在一个主机上将多个目录分层,并将它们作为一个单一的目录呈现。

安装Docker

安装Docker有很多不同的方法和地方。我们将走过Windows 10、Mac和Linux的Docker Desktop的安装。

Docker Desktop是一个允许你构建和分享容器化应用程序和微服务的应用程序。根据Docker的文档,它包括:

  • Docker引擎
  • Docker CLI客户端
  • Docker Compose
  • Docker Content Trust
  • Kubernetes
  • 凭证助手

Windows 10的安装

在Windows 10上下载Docker Desktop之前,你必须具备以下条件:

  • 64位版本的Windows 10专业版、企业版或教育版
  • 必须在系统的BIOS中启用硬件虚拟化支持
  • 必须在Windows中启用Hyper-VContainers功能

首先在谷歌上搜索 "安装Docker Desktop"。这个搜索将把你带到下载页面,在那里你可以下载安装程序并按照说明操作。

一旦安装完毕,你可能需要从Windows开始菜单中手动启动桌面。

Mac的安装

与Windows 10的安装一样,在Mac上安装Docker Desktop最简单的方法是谷歌 "安装Docker Desktop"。从那里,你可以按照下载页面上的链接。

一旦安装完毕,你可能需要从MacOS Launchpad中手动启动桌面。

注意:在Mac上,Docker引擎并不在MacOS Darwin内核上原生运行。Docker守护程序在一个轻量级的Linux虚拟机内运行,该虚拟机将守护程序和API暴露给你的Mac环境。这意味着你可以在Mac上打开一个终端,使用Docker命令。

Linux安装

有很多方法可以在Linux上安装Docker。你可以在谷歌搜索Linux上的Docker安装指南。在本节中,我们将看一下你安装Ubuntu Linux 20.04 LTS的方法之一。我们将假设你已经安装了Linux。我们将分两步安装Docker。

1.更新apt软件包索引

$ sudo apt-get update

Get:1 http://eu-west-1.ec2.archive.ubuntu.com/ubuntu.com/ubuntu focal InRelease [265
kb]

...

2.从官方软件库中安装Docker

$ sudo apt-get install docker.io

Reading package lists... Done

Building dependency tree

...

接下来要学习的内容

祝贺你迈出了使用Docker的第一步!Docker是一个流行的开源容器化平台,被用于许多不同的行业,以简化构建、保护和管理应用程序的过程。由于对Docker的需求如此之高,它是一个很好的工具,可以添加到你的技能组合中。

获得Docker实践经验的一个好方法是建立一个项目来增加你的职业组合。在你开始之前,还有很多关于Docker的东西需要学习,比如:

  • 容器的生命周期
  • Docker命令
  • 创建一个新的容器
  • 运行容器

学习愉快!