哈喽大家好,欢迎来到虚拟化时代君(XNHCYL),收不到通知请将我点击星标!“ 大家好,我是虚拟化时代君,一位潜心于互联网的技术宅男。这里每天为你分享各种你感兴趣的技术、教程、软件、资源、福利…(每天更新不间断,福利不见不散)

文 章 引 言
Docker 是一组平台即服务 (PaaS) 产品,它们使用操作系统级虚拟化技术以软件包(称为容器)的形式交付软件。容器彼此隔离,并捆绑自己的软件、库和配置文件;它们可以通过明确定义的渠道相互通信。所有容器都由单个操作系统内核运行,因此使用的资源比虚拟机少。
目录
- 什么是 Docker?
- Docker 的关键组件
- 什么是 Dockerfile?
- 什么是 Docker 架构以及 Docker 如何工作?
- 什么是 Docker Image?
- 什么是 Docker 容器?
- 什么是 Docker Hub?
- 什么是 Docker Compose?
- Docker 命令
- Docker 引擎
- 如何在 Ubuntu 上安装 Docker?分步指南
- Docker 安全
- Docker 与 Kubernetes
什么是 Docker?
Docker是一个开源容器化平台,您可以使用它将应用程序及其所有依赖项打包到一个名为容器的标准化单元中。容器重量轻,因此易于携带,并且与底层基础架构和其他容器隔离。您可以在安装了 docker 的任何机器上将docker 映像作为docker 容器运行,而无需依赖操作系统。
Docker 为何如此受欢迎?
Docker 之所以如此受欢迎,是因为它对软件开发和部署的影响。以下是 Docker 流行的一些主要原因:
- 可移植性: Docker 方便开发人员将应用程序及其所有依赖项打包到单个轻量级容器中。它有助于确保不同计算环境中的一致性能。
- 可重复性:通过将应用程序及其依赖项封装在容器中,可以确保软件设置在开发、测试和生产环境中保持一致。
- 效率: Docker 通过其基于容器的架构优化了资源利用率。它允许开发人员在单个主机系统上运行多个独立的应用程序。
- 可扩展性: Docker 的可扩展性特性使得开发人员在工作负载增加时能够更轻松地处理他们的应用程序。
Docker 的关键组件
以下是Docker的一些关键组件:
- Docker Engine:它是docker的核心部分,负责处理容器的创建和管理。
- Docker Image:它是一个只读模板,用于创建容器,包含应用程序代码和依赖项。
- Docker Hub:它是一个基于云的存储库,用于查找和共享容器镜像。
- Dockerfile:它是一个包含构建docker镜像的指令的脚本。
- Docker Registry:它是一个docker镜像的存储分发系统,你可以在其中以公共和私有模式存储镜像。
什么是 Dockerfile?
Dockerfile使用 DSL(领域特定语言)并包含生成 Docker 映像的指令。Dockerfile 将定义快速生成映像的流程。在创建应用程序时,您应该按顺序创建 Dockerfile,因为Docker守护程序会从上到下运行所有指令。
(Docker 守护进程,通常简称为“Docker”,是管理系统上的 Docker 容器的后台服务。)
- 它是一个文本文档,包含必要的命令,执行后可帮助组装 Docker 镜像。
- Docker 镜像是使用 Dockerfile 创建的。

什么是 Docker 架构以及 Docker 如何工作?
Docker 使用客户端-服务器架构。Docker 客户端与 docker 守护进程通信,这有助于构建、运行和分发 docker 容器。Docker 客户端与守护进程在同一系统上运行,或者我们可以远程将 Docker 客户端与 Docker 守护进程连接起来。借助 UNIX 套接字或网络上的 REST API,docker 客户端和守护进程可以相互交互。要了解有关 docker 工作原理的更多信息,请参阅Docker 的架构。

什么是 Docker Image?
它是一个由多个层组成的文件,用于在 Docker 容器中执行代码。它们是一组用于创建 Docker 容器的指令。Docker 镜像是一个可执行软件包,其中包含运行应用程序所需的一切。此镜像告知容器应如何实例化,确定将运行哪些软件组件以及如何运行。Docker 容器是一个虚拟环境,它将应用程序代码与运行应用程序所需的所有依赖项捆绑在一起。应用程序可以在一个计算环境到另一个计算环境中快速可靠地运行。
什么是 Docker 容器?
Docker 容器是镜像的运行时实例。允许开发人员将应用程序与所需的所有部分(例如库和其他依赖项)一起打包。Docker 容器是 Docker 镜像的运行时实例。容器包含应用程序所需的整个套件,因此应用程序可以以独立的方式运行。例如,假设有一个带有 NGINX SERVER 的 Ubuntu OS 镜像,当使用 docker run 命令运行此镜像时,将创建一个容器,并且 NGINX SERVER 将在 Ubuntu OS 上运行。
什么是 Docker Hub?
Docker Hub 是一种存储库服务,它是一种基于云的服务,人们可以随时随地通过互联网推送他们的 Docker 容器镜像,也可以从 Docker Hub 提取 Docker 容器镜像。通常,它可以轻松查找和重复使用镜像。它提供的功能包括您可以将镜像推送为私有或公共注册表,您可以在其中存储和共享 Docker 镜像。
主要由 DevOps 团队使用 Docker Hub。它是一种开源工具,可免费用于所有操作系统。它就像存储一样,我们存储图像并在需要时提取图像。当一个人想要从 Docker Hub 推送/提取图像时,他们必须具备 Docker 的基本知识。让我们讨论一下 Docker 工具的要求。

什么是 Docker Compose?
Docker Compose 将执行基于 YAML 的多容器应用程序。YAML 文件包含部署容器Docker Compose所需的所有配置,该配置与Docker Swarm集成,并提供构建和部署容器的说明。使用 Docker Compose,每个容器都构建为在单个主机上运行。
如何下载Docker Desktop?
Docker Desktop 提供 GUI 来处理 docker 容器、docker 镜像和 docker 网络。Docker Desktop 提供单独的环境,其中包含 Docker Engine、Docker CLI、Docker Compose、Kubernetes和其他工具,这些工具是构建、运送和运行以容器形式运行应用程序所必需的,这使其更加用户友好。要了解如何安装 docker Desktop
Docker 命令
通过引入必要的 docker 命令,docker 成为了简化容器管理流程的强大软件。它有助于确保无缝的开发和部署工作流程。以下是一些常用的 docker 命令:
- Docker Run:用于从镜像启动容器,并指定运行时选项和命令。
- Docker Pull:它将容器镜像从容器注册表(如 Docker Hub)提取到本地机器。
- Docker ps:它有助于显示正在运行的容器及其重要信息,如容器 ID、使用的图像和状态。
- Docker Stop:它有助于正常停止正在运行的容器并关闭其中的进程。
- Docker Start:它有助于重新启动已停止的容器,并从以前的状态恢复其操作。
- Docker login:它有助于登录到 Docker 注册表,从而可以访问私有存储库。
Docker 引擎
托管容器的软件名为 Docker Engine。Docker Engine 是一个基于客户端-服务器的应用程序。docker 引擎有 3 个主要组件:
- Server:负责在Docker上创建和管理Docker镜像、容器、网络、卷等,称为守护进程。
- REST API:它指定应用程序如何与服务器交互并指示它做什么。
- Client:客户端是一个 docker 命令行界面 (CLI),允许我们使用 docker 命令与 Docker 交互。
为什么要使用 Docker?
Docker 可用于打包应用程序及其依赖项,从而使其轻量级且易于更快更可靠地交付代码。如果机器中安装了 docker 引擎,Docker 使在生产环境中运行应用程序变得非常简单,docker 容器可以独立于平台。
- 资源效率:Docker 通过在单个主机上运行多个容器来帮助最大化资源利用率。它有助于降低基础设施成本并提高效率。
- 版本控制:它简化了应用程序及其依赖项的版本控制,确保了一致性并使得团队之间的协作更加容易。
- 微服务敏捷性:支持采用微服务架构,促进可扩展性、灵活性和故障隔离性的敏捷应用程序开发。
什么是 Docker For AWS?
Docker 是以容器形式运行应用程序的最强大工具。Docker 容器重量轻,可以在任何操作系统上运行。
AWS 提供 Amazon Elastic Container Service ( Amazon ECS ),它是一种完全托管的容器服务,您可以通过它部署、扩展和管理 Docker 容器。根据性能,Amazon ECS 是最可靠的平台,它还可以与其他 AWS 服务集成,如负载平衡、服务发现和容器运行状况监控。
Docker 容器与虚拟机之间的区别
以下是docker容器和虚拟机的区别:
| Docker 容器 | 虚拟机 |
| Docker 容器包含二进制文件、库和配置文件以及应用程序本身。 | 虚拟机 (VM) 在虚拟机管理程序上运行,虚拟机管理程序允许多个虚拟机与其自己的操作系统一起在一台机器上运行。 |
| 它们不包含每个容器的客户操作系统,而是依赖于底层操作系统内核,这使得容器变得轻量级。 | 每个虚拟机都有自己的操作系统副本以及应用程序和必要的二进制文件,这使得它变得更大并且需要更多的资源。 |
| 容器与同一主机操作系统中的其他容器共享资源,并提供操作系统级别的进程隔离。 | 它们提供硬件级别的进程隔离,但启动速度较慢。 |
如何在 Ubuntu 上安装 Docker?
以下步骤指导您在 ubuntu 上安装 docker:
步骤 1:删除旧版本的 Docker
- 执行以下命令删除旧版本的docker软件:
sudo apt-get remove docker docker-engine docker.io containerd runc
第 2 步:安装 Docker 引擎
- 以下命令用于安装docker引擎:
sudo apt-get update
$ sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
$ sudo groupadd docker
$ sudo usermod -aG docker $USER
步骤3:验证Docker安装
- 尝试使用以下命令运行容器来检查 docker 是否已成功安装在您的系统中:
sudo docker run hello-world
使用 Docker 容器化应用程序
以下步骤指导如何使用 Docker 对应用程序进行容器化:
步骤 1:创建 Dokcerfile 和 Python 应用程序
- 创建一个包含 2 个文件(Dockerfile 和 main.py 文件)的文件夹
第 2 步:开发 Python 代码
- 使用以下代码编辑main.py,或者您可以尝试开发自己的python代码。
#!/usr/bin/env python3
print("Docker and GFG rock!")
步骤 3:开发 Dockerfile
- 根据以下说明编辑 Dockerfile 以开发 Dockerfile:
FROM python:latest
COPY main.py /
CMD [ "python", "./main.py" ]
步骤 4:创建 Docker 映像
- 创建并编辑 main.py 文件和 Dockerfile 后,通过运行以下命令创建包含应用程序的映像:
$ sudo docker build -t python-test .
- “-t”选项允许定义图像的名称。“python-test”是我们为图像选择的名称。
步骤5:运行Docker容器
- 一旦创建了图像,您的代码就可以启动了。
$ sudo docker run python-test
将映像推送到 Docker Hub 的示例
以下步骤指导如何将镜像推送到 Dockerhub:
步骤 1:在 Docker Hub 上创建一个帐户,如果已经有一个帐户,则使用现有帐户。
第二步:点击“Create Repository”按钮,输入文件名称,点击“Create”。
步骤 3:现在将“标记我们的图像”并“将其推送到我们刚刚创建的 Docker Hub 存储库”。
- 现在,运行以下命令列出 docker 镜像:
$ docker images
- 以上将给出这个结果
REPOSITORY TAG IMAGE_ID CREATED SIZE afrozchakure/python-test latest c7857f97ebbd 2 hours ago 933MB
- 图像 ID 用于标记图像。标记图像的语法是:
docker tag <image-id> <your dockerhub username>/python-test:latest
$ docker tag c7857f97ebbd afrozchakure/python-test:latest
步骤 4:将镜像推送到 Docker Hub 存储库
$ docker push afrozchakure/python-test
从 Docker Hub 获取并运行镜像
1.要从本地系统中删除特定图像的所有版本,我们使用它的图像 ID。
$ docker rmi -f af939ee31fdc
2.现在运行映像,如果本地机器上不存在映像,它将从 docker hub 获取映像。
$ docker run afrozchakure/python-test
Docker 的重要性
以下是讨论docker重要性的一些见解:
- 效率和速度:通过将具有依赖关系的应用程序打包到一致的容器中,它有助于提供简化的开发和部署。
- 资源优化:它有助于有效地共享主机系统资源,从而提高应用程序密度并节省成本。
- 可扩展性和可移植性:它能够轻松扩展应用程序并确保在不同环境之间的无缝移动。
- 隔离和安全:提供高度隔离,减少冲突并增强安全性。
Docker 的优点
以下是 Docker 的一些优点:
- 可移植性: Docker 设施可创建轻量级的便携式容器,无论底层操作系统是什么,它都可以在任何机器上运行。
- 隔离: Docker 通过容器提供高级别的隔离,使应用程序能够彼此独立运行,解决一个容器不会影响其他容器的问题。
- 可重复性:借助 Docker,开发人员可以轻松地将其应用程序及其依赖项打包成可重复使用的映像。它允许在开发、测试和生产环境中进行一致且可重复的构建。
- DevOps 集成:它促进整个软件开发生命周期的协作和自动化,以处理不断增加的工作量。
Docker 的替代品
以下是Docker的替代方案:
- Podman:提供与 Docker 兼容的容器引擎,注重安全性和兼容性,非常适合不首选或无法使用 Docker 的环境。
- rkt:由 CoreOS 开发的轻量级容器运行时,旨在实现简单性、安全性和可组合性,为 Docker 容器运行时提供替代方案。
- LXC(Linux 容器):提供操作系统级虚拟化,用于在单个主机上运行多个隔离的 Linux 系统(容器),为某些用例提供 Docker 的轻量级替代方案。
- containerd: Docker 公司开发的行业标准核心容器运行时,为构建容器化应用程序提供了一个最小而稳定的平台,通常用作 Kubernetes 等更高级容器编排系统的 Docker 的低级替代方案。
Docker 安全
以下是关于docker安全的一些见解:
- 隔离:Docker 容器提供了强大的隔离性,确保应用程序和进程的运行。
- 不可变基础设施:它促进使用不可变基础设施,其中容器是根据版本控制的不可变图像构建的。
- 资源限制:它允许您定义容器的资源限制,例如 CPU 和内存限制。
- 安全扫描:它提供内置的安全扫描工具,允许您在部署之前扫描容器映像中是否存在已知漏洞和恶意软件。
Docker 的用例
以下是 Docker 的一些用例:
- 持续集成和持续部署 (CI/CD):它有助于简化和自动化软件交付过程,确保更快、更可靠的发布。
- 微服务架构:它有助于微服务的开发、部署和管理,并实现独立的扩展和维护。
- 开发环境一致性:它将确保一致的开发、测试和生产环境,减少“它在我的计算机上运行”的问题。
- 多云和混合云部署:它有助于简化跨各种云平台的应用程序部署,增强灵活性并减少供应商锁定。
有效使用 Docker 的最佳实践和技巧
以下是有效使用docker的最佳实践和技巧:
- 使用官方镜像:尝试始终从 Docker Hub 的官方镜像开始,以确保安全性和可靠性。
- 最小化图像大小:通过使用多阶段构建和删除不必要的文件,使 Docker 图像尽可能小。
- 利用 Docker Compose:使用 Docker Compose 管理多容器应用程序,简化设置和部署。
- 实施适当的安全措施:定期更新图像,避免以 root 身份运行容器,并使用网络分段来增强安全性。
Docker 与 Kubernetes
以下是docker和kubernetes的区别:
| 特征 | Docker | Kubernetes |
| 主要目的 | 容器化平台 | 容器编排平台 |
| 功能 | 创建和管理容器 | 管理和扩展容器化应用程序 |
| 设置复杂性 | 设置和使用简单 | 更复杂的设置和配置 |
| 可扩展性 | 仅限于单节点扩展 | 专为大规模、多节点环境而设计 |
| 联网 | 基本网络功能 | 具有服务发现和负载平衡的高级网络 |
| 状态管理 | 无状态;管理单个容器 | 有状态;管理容器集群和服务 |
| 用例 | 开发和测试环境 | 对可扩展性和可靠性要求较高的生产环境 |
什么是 Docker – 常见问题解答
Docker Hub 是什么?
Docker Hub 是一个公共注册中心,用户/开发人员可以在其中存储和共享他们创建的系统映像,并使他们能够轻松访问和重复使用其他软件开发人员的映像。
使用 Docker Hub 需要什么?
要使用 Docker Hub,用户必须在Docker Hub平台上拥有一个帐户。如果您没有 Docker Hub 帐户,可以通过注册创建一个。一旦您拥有 Docker 帐户,您就可以执行诸如将图像推送到 Docker Hub 和从 Docker Hub 提取图像之类的操作。
什么是 Docker 日志?
Docker 守护进程和Docker 容器将以文本消息的形式生成 docker 日志,这将帮助您进一步排除故障、监控应用程序的性能并收集有关 Docker 环境状态的信息。
什么是 Docker Build?
Docker build 是一个用于使用Dockerfile 构建 docker 镜像的命令。
什么是 Docker Ubuntu?
“Docker Ubuntu” 是指在基于 Ubuntu 的操作系统上使用Docker服务。运行 Docker 最适合流行的 Linux 发行版Ubuntu。
【以上内容均属虚拟化时代君整理,大家仅供参考!】以上部分内容参考外站博客完成!
点击下方链接阅读精彩文章
资源申明:小编更新资源文章只是为了给大家提供一个绿色学习的平台,如果你在本站看到的任何图片文字有涉及到你的利益以及版权都可以联系小编删除。联系:XNHSDJ
2751

被折叠的 条评论
为什么被折叠?



