Skip to content
标签

什么是Docker?Docker安装与使用详细指南

Featured image of post 什么是Docker?Docker安装与使用详细指南

Docker是一个容器化平台,将应用程序及其依赖项打包成轻量级容器。详细指南介绍如何在Windows、macOS、Ubuntu和CentOS上安装Docker。

Docker是一个容器化平台,将应用程序及其依赖项打包成轻量级容器,实现快速一致的部署。本文详细介绍什么是Docker、Docker的工作原理、如何在各种操作系统上安装Docker以及Docker的基本命令。

什么是Docker?

什么是Docker?Docker是一个软件平台,通过使用容器(在虚拟化平台上)使您能够更轻松地构建、部署和运行应用程序。

Docker的更多信息:Docker帮助将软件打包成标准化容器,其中包含软件运行所需的所有必要组件,如库、系统工具、源代码和运行时环境。当您需要在任何服务器上部署应用程序时,只需运行Docker容器,应用程序就会立即启动。

借助Docker,在任何环境中部署和扩展应用程序都变得简单,同时确保您的代码始终稳定运行。

什么是Docker Container?

Container是一种工具,帮助开发者将应用程序及其所有依赖项打包成一个紧凑的单元。该单元可以部署在许多不同的计算机上,无论每台机器之间的配置差异如何。

Docker和虚拟机(VM)都是虚拟化技术,但Docker具有几个突出的优势,使其更受欢迎。

Docker Container的优势

  • 易于使用: Docker具有简单直观的界面,适合从开发者到系统管理员的所有人。它使容器的创建、管理和部署变得简单。
  • 速度快: Container相当紧凑,可以在几秒钟内启动,非常适合应用程序的开发和测试。
  • 可移植性: Container可以部署在任何支持Docker的平台上,简化了应用程序在不同云环境之间的部署。
  • 可扩展性: Container可以连接在一起形成复杂的应用程序,非常适合部署微服务应用。

Docker的历史与发展

Docker由Solomon Hykes和Sebastien Pahl于2010年创建。该项目最初由Hykes作为dotCloud(一家于2016年关闭的PaaS公司)内部项目的一部分开发,旨在支持在Cloud平台上更轻松地部署应用程序。

后来,容器技术不断发展,最终促成了Docker在2013年的成功。该工具凭借其便利性和使应用程序可移植的能力,迅速引起了社区的关注。到2017年,Docker已成为全球广泛使用的容器工具。

Docker平台建立在现有的虚拟化技术之上,如LXC和chroot,但它简化了这些技术的使用,并提供了额外的功能,包括:

  • 多平台支持: Docker可以在Linux、Windows和macOS上运行。
  • 支持多种应用类型: Docker用于运行Web应用、服务器应用、移动应用和许多其他类型的应用。
  • 微服务支持: Docker支持创建和部署微服务应用。

Docker迅速成为全球开发者、系统管理员和企业广泛使用的流行工具。根据Red Hat的报告,目前超过80%的大型企业使用Docker。

Docker的工作原理

Docker工具通过提供一种标准的代码运行方法来工作,类似于虚拟机虚拟化服务器硬件以减少直接管理。然而,Docker容器不是虚拟化硬件,而是虚拟化应用程序的运行时环境。当Docker安装在服务器上时,它提供基本命令来创建、启动和停止容器。

Docker的架构由两个主要组件组成:Docker Engine和Docker Client。Docker Engine是一个运行在服务器上的程序,负责创建、启动和管理容器。Docker Client是一个运行在用户计算机上的应用程序,允许用户与Docker Engine进行交互。

Docker Engine和Docker Client通过REST API进行通信,REST API是一组标准协议,使应用程序之间能够相互通信。

如何在几分钟内在线创建代理

此外,Docker还提供了一些服务,帮助您轻松地大规模部署和管理容器,包括:

  • Amazon ECS(Elastic Container Service): 一项托管服务,允许您在AWS上创建和管理容器集群。
  • AWS Fargate: 此服务允许您在不管理底层基础设施的情况下运行容器。
  • Amazon EKS(Elastic Kubernetes Service): 一项托管的Kubernetes服务,帮助您在AWS上部署Kubernetes应用。
  • AWS Batch: 一项批处理作业管理服务,允许您在AWS上运行批处理作业。

如果您使用较旧的Windows或Mac操作系统,可以使用Docker Toolbox。这是一套在Windows和Mac上运行Docker的工具集,包括Docker Engine、Docker Client、Docker Compose和Kitematic。

Docker工作流程

Docker工作流程通常由三个主要步骤组成:Build、Push和Pull/Run。

构建镜像(Build)

这是创建Dockerfile的第一步。在Dockerfile中,我们可以包含源代码以及运行应用程序所需的所有必要库。具体来说,Dockerfile将在安装了Docker Engine的计算机上构建。构建过程完成后,我们将得到一个包含应用程序的容器。

推送镜像到注册中心(Push)

要将容器存储在云端,我们可以使用Docker Hub等注册中心。为此,您需要在Hub上创建一个账户。拥有账户后,您可以使用push命令将容器推送到注册中心。

拉取和运行镜像(Pull、Run)

要让另一台计算机使用该容器,您需要从注册中心将容器拉取到该机器上。该计算机也需要安装Docker Engine。容器拉取完成后,您可以在另一台计算机上运行它。

Docker的主要组件

Docker由几个主要组件组成,每个组件在Docker生态系统中都扮演着重要角色:

Docker Engine

Docker Engine是打包和部署应用程序的主要工具。它由两个主要组件组成:Docker daemon和Docker client。daemon是运行在服务器上的后台程序,负责创建、启动和管理容器。Docker client是运行在用户计算机上的应用程序,允许用户与daemon进行交互。

Docker Engine的功能:

  • 创建image: image是包含运行应用程序所需所有组件的文件。Docker Engine使用一组称为Dockerfile的指令来创建image。
  • 运行容器: 容器是操作系统和应用程序的轻量级副本。Docker Engine使用image来创建和运行容器。

Docker Engine对应用程序打包的好处:

  • 轻松打包应用程序: Docker Engine帮助您轻松地将应用程序打包成可重用的image。
  • 一致的应用程序执行: 容器可以在任何安装了Docker Engine的服务器上运行,确保在不同环境中部署应用程序时的一致性。
  • 节省资源: 容器仅使用应用程序所需的系统资源,节省服务器资源。

Docker Images

Docker Images是容器的蓝图。每个image定义了应用程序运行所需的所有组件。创建后,image变为不可变的。您可以从image创建和运行实例,称为容器。

Docker Containers

Docker Containers是Docker image的运行实例。每个容器打包了一个应用程序及其所有必要的依赖项。容器将软件与环境影响隔离开来,帮助应用程序稳定运行,无论环境之间的差异如何(例如staging和production)。

Docker Hub

Docker Hub是Docker提供的流行注册中心服务。在这里,您可以上传(push)您的Docker image,与社区或同事共享,并从社区或其他可信来源下载(pull)image。

为什么应该使用Docker?

在一台或多台服务器上安装和部署应用程序可能是一个复杂且耗时的过程。它需要为应用程序设置必要的工具和环境,同时确保应用程序在每台服务器上都能正确运行。开发者经常面临的一个主要挑战是不同服务器之间环境的不一致性。Docker提供了一种有效的解决方案来解决这些问题。

更快的软件交付

Docker帮助以比传统方法快7倍的速度交付软件。应用程序被打包成易于传输的紧凑容器,使开发者能够快速便捷地部署应用程序。

简化应用程序运维

Docker通过将应用程序打包成易于管理的容器来简化应用程序运维。这帮助运维团队轻松有效地部署、监控和排除应用程序故障。

顺畅的应用程序迁移

Docker帮助将应用程序从本地开发环境顺畅快速地迁移到生产环境。容器紧凑打包,可以在任何安装了Docker Engine的服务器上运行,使应用程序迁移更加简单高效。

节省成本

Docker通过优化服务器资源的能力帮助节省成本。容器仅使用应用程序所需的系统资源,使您能够在同一台服务器上运行多个应用程序,最大限度地减少所需的服务器数量,降低运营成本。

什么是Proxy Safari

什么时候应该使用Docker?

以下是Docker发挥最大效用的一些典型场景:

部署微服务架构

微服务架构是一种通过将应用程序划分为小型独立服务来开发和部署应用程序的方法。每个服务都可以独立部署、管理和扩展。

Docker是部署微服务架构的理想工具,帮助将服务打包成紧凑的容器。这使得服务的部署和管理更加简单高效。

加速应用程序部署

Docker简化并自动化了构建、推送应用程序到服务器以及执行应用程序的步骤。因此,公司可以加速部署过程并提高运营效率。

例如:Docker可用于从源代码构建应用程序、将应用程序推送到服务器,并且只需一条命令即可运行应用程序,帮助开发者节省时间和精力。

灵活扩展应用程序

Docker支持灵活的应用程序扩展。这意味着您可以根据需要轻松添加或删除容器。

例如:如果您的Web应用程序需要处理高流量,您可以轻松添加新容器以增加应用程序的处理能力。

创建与生产环境相似的本地环境

Docker帮助创建与生产环境相同的本地环境,帮助开发者更准确高效地构建和测试应用程序。

总之,Docker是一个强大的工具,可以在许多不同的场景中使用。以上案例是Docker在部署和管理应用程序中发挥效用的典型示例。

使用Docker的好处

将Docker应用于您的开发和部署工作流程带来许多显著的好处:

  • 节省时间和成本: Docker帮助减少环境设置时间和硬件成本。您可以快速创建和删除开发、测试和生产环境。
  • 提高开发效率: 开发者可以专注于编写代码,而不必担心环境问题。Docker帮助消除常见的"在我的机器上可以运行"问题。
  • 提高可移植性: 打包在容器中的应用程序可以轻松地在不同环境之间移动,从开发机器到生产服务器或云端。
  • 轻松扩展: 快速创建和删除容器的能力帮助灵活扩展应用程序。您可以轻松增加或减少应用程序实例的数量以满足需求。
  • 增强安全性: 在容器中隔离应用程序有助于最大限度地降低安全风险。如果一个容器被攻破,其他容器和主机系统仍然受到保护。
  • 良好的CI/CD支持: Docker可以轻松与CI/CD工具集成,帮助改进和自动化开发、测试和部署工作流程。
  • 轻松的版本管理: Docker Images允许您轻松管理和切换应用程序及其依赖项的不同版本。
  • 多平台支持: Docker可以在许多不同的操作系统和云平台上运行,为选择部署环境提供高度灵活性。

Docker安装指南

Docker是一个强大的工具,但要开始使用它,您需要正确安装。以下是在最流行的操作系统上安装Docker的详细指南。

在Windows 10上安装Docker

在Windows上的安装步骤:

  1. 从官方网站下载Docker Desktop for Windows安装程序:Docker Desktop for Windows。
  2. 运行安装程序并按照说明操作。
  3. 对于Windows 10,您需要启用Hyper-V虚拟化模式。

启用Hyper-V虚拟化的方法:

方法一:使用PowerShell

  • 以管理员权限打开PowerShell,运行以下命令启用Hyper-V:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

方法二:使用Windows设置

  • 右键单击Windows图标,选择"应用和功能"。
  • 选择"程序和功能"。
  • 选择"启用或关闭Windows功能"。
  • 勾选Hyper-V,如下图所示。

在macOS上安装Docker

您可以通过以下链接下载macOS的Docker安装程序:Docker Desktop for Mac,然后像安装其他常规工具一样按照说明进行安装。

在Ubuntu上安装Docker

Ubuntu是最流行的Linux发行版之一,Docker对其支持非常好。以下是在Ubuntu上安装Docker的方法:

  • 首先,更新软件包索引: sudo apt-get update

  • 安装必要的软件包以允许apt通过HTTPS使用仓库: sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release

  • 添加Docker的官方GPG密钥: curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

  • 设置稳定版仓库: echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

安装Docker Engine

sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io

  • 要确认Docker已正确安装,运行"hello-world"容器: sudo docker run hello-world

在CentOS 7/RHEL 7上安装Docker

CentOS和Red Hat Enterprise Linux(RHEL)是服务器环境的热门选择。以下是在这些操作系统上安装Docker的方法:

  • 安装必要的软件包: sudo yum install -y yum-utils device-mapper-persistent-data lvm2

  • 设置Docker仓库: sudo yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo

  • 安装Docker: sudo yum install docker-ce docker-ce-cli containerd.io

  • 启动并启用Docker服务: sudo systemctl start docker

什么是GitHub?从入门到精通的详细A-Z指南

  • 通过运行"hello-world"容器确认Docker已正确安装: sudo docker run hello-world

在CentOS 8/RHEL 8上安装Docker

对于较新版本的CentOS和RHEL,安装过程略有不同:

  • 安装必要的软件包: sudo dnf install -y dnf-utils device-mapper-persistent-data lvm2

  • 添加Docker仓库: sudo dnf config-manager –add-repo=https://download.docker.com/linux/centos/docker-ce.repo

  • 安装Docker: sudo dnf install docker-ce docker-ce-cli containerd.io

  • 启动并启用Docker服务: sudo systemctl start docker sudo systemctl enable docker

  • 通过运行"hello-world"容器确认安装: sudo docker run hello-world

Docker基本命令

要管理Docker组件,您可以使用命令行界面(CLI)。

  • 在macOS和Linux上,打开终端并输入命令。

  • 在Windows上,您可以使用PowerShell运行命令。 以下是一些常用的基本命令:

  • 列出image/容器: $ docker image/container ls

  • 删除image/容器: $ docker image/container rm <image/容器名称>

  • 删除所有现有image: $ docker image rm $(docker images -a -q)

  • 列出所有现有容器: $ docker ps -a

  • 停止特定容器: $ docker stop <容器名称>

  • 从image运行容器并重命名容器: $ docker run --name <容器名称> <image名称>

  • 停止所有容器: $ docker stop $(docker ps -a -q)

  • 删除所有现有容器: $ docker rm $(docker ps -a -q)

  • 显示容器日志: $ docker logs <容器名称>

  • 从容器构建image: $ docker build -t <image名称>

  • 创建后台运行的容器: $ docker run -d <image名称>

  • 从Docker Hub拉取image: $ docker pull <image名称>

  • 启动容器: $ docker start <容器名称>

Docker使用综合指南

要有效使用Docker,您需要了解如何管理容器、image以及如何创建自定义image。以下是这些方面的详细指南。

管理Docker Containers

容器是Docker的核心组件。以下是管理容器的一些基本操作:

  • 创建并运行容器: docker run -d –name my_container nginx 此命令以分离模式(-d)创建并运行一个nginx容器,将其命名为"my_container"。

  • 列出运行中的容器: docker ps 此命令将显示系统上所有运行中的容器。

  • 停止容器: docker stop my_container 此命令将停止名为"my_container"的容器。

  • 删除容器: docker rm my_container 此命令将删除名为"my_container"的容器。请注意,容器必须在删除前停止。

管理Docker Images

Image是用于创建容器的模板。以下是管理image的方法:

  • 从Docker Hub拉取image: docker pull ubuntu:latest 此命令将下载最新版本的Ubuntu image。

  • 列出已下载的image: docker images 此命令将显示本地机器上所有可用的image。

  • 删除image: docker rmi ubuntu:latest 此命令将从本地机器删除最新版本的Ubuntu image。

创建和使用Dockerfile

Dockerfile是一个包含构建自定义Docker image指令的文本文件。以下是如何创建和使用Dockerfile的示例:

  • 创建Dockerfile:
FROM node:14
WORKDIR /app

COPY package*.json ./

RUN npm install

COPY . .

EXPOSE 3000

CMD ["npm", "start"]

这是一个用于创建Node.js应用程序image的简单Dockerfile。

  • 从Dockerfile构建image: docker build -t my-node-app 此命令将从当前目录的Dockerfile创建一个名为"my-node-app"的新image。

  • 从新创建的image运行容器: docker run -d -p 3000:3000 my-node-app 此命令将从"my-node-app" image创建并运行一个容器,将容器的3000端口映射到主机的3000端口。

Docker基本概念

以下是您可能会遇到的一些常见概念:

  • Container: image的运行实例。image是只读文件,而容器是可执行文件,允许用户交互,管理员可以调整设置和策略。
  • Volumes: 容器数据的存储区域。Volumes在容器初始化时创建,帮助数据在容器停止或删除后仍然持久存在。
  • Machine: 帮助在服务器上创建和管理Engine的工具,支持在服务器环境中部署和运行容器。
  • Compose: 帮助您通过在配置文件中定义容器配置来运行应用程序的工具,允许您轻松地同时管理和部署多个容器。

理解这些概念将帮助您在应用程序开发和部署过程中更有效地使用Docker。

{{< test-result title="So sanh Docker Container va May ao (VM)" headers="Tieu chi|Docker Container|May ao (VM)" rows="Khoi dong|Vai giay|Vai phut;Kich thuoc|MB|GB;Hieu suat|Gan nhu native|Overhead ao hoa;Mat do|Hang tram tren 1 host|Hang chuc tren 1 host;Co lap|Cap OS (process)|Cap phan cung;Di dong|Rat cao|Trung binh" />}}

注意
Docker giai quyet van de "works on my machine" bang cach dong goi ung dung va phu thuoc vao container nhe. Container khoi dong nhanh, su dung it tai nguyen va dam bao nhat quan giua moi truong dev, staging va production.

总结: Docker改变了现代应用程序的开发和部署方式。凭借容器化能力,Docker帮助节省资源、加速CI/CD,并简化微服务管理。从在Windows、macOS到Linux上的安装,Docker是每个开发者和DevOps团队不可或缺的工具。

来源与参考文献
- https://docs.docker.com/get-started/overview/ - https://www.docker.com/resources/what-container/ - https://kubernetes.io/docs/concepts/containers/
什么是Docker?
Docker是一个软件平台,允许您将应用程序及其依赖项打包成轻量级容器,实现在任何环境中快速一致的部署。
Docker Container与虚拟机有什么区别?
Container在操作系统层面进行虚拟化,轻量且启动快速。虚拟机虚拟化整个硬件,更重且启动更慢,但提供更完整的隔离性。
什么是Dockerfile?
Dockerfile是一个包含构建自定义Docker image指令的文本文件,包括基础镜像、复制文件、安装依赖项以及运行应用程序的命令。
Docker Hub有什么用途?
Docker Hub是一个用于存储、共享和下载Docker image的公共注册中心。您可以将image推送到Docker Hub,也可以从Docker Hub拉取image。
什么时候应该使用Docker?
当部署微服务架构、需要开发和生产环境一致性、希望加速CI/CD、灵活扩展应用程序或节省服务器资源时,应使用Docker。

article.share