使用 CLI 管理容器

在虚拟化出现之前,Web 服务器和 Web 应用程序的管理繁琐且效率低下。虚拟化技术的应用让这项任务变得轻松许多。随后,容器化技术的应用更是锦上添花。对于网络工程师来说,学习虚拟化的基础知识并非易事,尤其考虑到物理层本身就极具挑战性。 什么是 Docker?为什么要使用它? Docker 是一个用于设计、交付和运行应用程序的开放平台。使用 Docker,您的应用程序可以独立于基础架构,因为它需要快速交付。这只是 Docker 提供的一种方法;遗憾的是,其他一些问题仍未得到解答。例如,Windows、Mac 和 Linux 都是可以想到的操作系统:但在理想情况下,只能管理 Docker 管理的 Windows 容器。只有采用 Docker 的所有测试和部署方法,才能部署代码并制定离岸运营策略:因此,使用 Docker 运行时应该可以提高在生产环境中编写和部署代码的速度。 但这在实际中意味着什么呢?与虚拟化类似,Docker 允许多个容器之间共享资源,这些容器独立于操作系统内核。这意味着可以在单个服务器上托管多个应用程序,并使用单个操作系统。 Docker 的好处 环境一致性 隔离:将应用程序及其依赖项保存在单独的容器中,以确保跨环境的一致行为。 不再有问题:告别“它在我的计算机上可以运行”的问题。 快速部署 快速启动:几秒钟内启动容器,以便更快地进行测试和部署。 轻松回滚:如果需要,立即恢复到以前的容器版本。 资源效率 轻量级:容器共享主机操作系统内核,使其比传统虚拟机更高效。 多个应用程序:在一台服务器上运行多个应用程序,无需额外开销。 简化扩展 水平扩展:轻松添加更多容器来处理增加的流量。 使用编排工具:使用 Kubernetes 或 Docker Swarm 管理和自动化您的容器。 微服务架构 服务细分:将应用程序分解为更小的服务,每个服务位于自己的容器中。 独立开发:团队可以从事不同的服务,而不会互相干扰。 环境版本控制 图像版本控制:使用版本化的 Docker 图像跟踪应用程序的不同状态。 精简的 CI/CD 集成:使用 Docker 与 … Read more

Docker Nginx 容器

Docker 是一个开源平台,使开发人员能够轻松地开发、发布和运行应用程序。它将应用程序及其依赖项打包在一个隔离的虚拟容器中,该容器通常在 Linux 系统上运行,与虚拟机相比非常轻量。这是因为容器只与其加载的二进制文件/库共享操作系统内核。要了解更多关于 Docker 的信息,请阅读Docker 简介。 什么是 NGINX 服务器? Nginx 主要用作反向代理软件。Nginx 是一款开源 Web 服务器,您可以使用它执行多项任务,例如可扩展性、效率和灵活性。它专为高性能而设计,可以处理大量传入请求的情况。 Nginx 服务器的优势 Nginx 服务器的优点如下: 高性能: Nignix 是一种事件驱动的架构,可以更高效地一次性处理高负载。Nginx 占用的内存非常少,这将有助于提高整体效率。 可扩展性: Nginx 可以根据传入流量进行扩展和缩减。为了管理不断增长的工作负载,它可以安装在单台服务器或服务器集群上。 灵活性: Nginx 使用起来非常灵活,除了 Web 服务之外,它还可以用于其他用途,如反向代理、负载均衡器、缓存服务器和媒体流服务器。 低资源消耗:与其他 Web 服务器相比,Nginx 消耗的 CPU 和内存等资源非常少。 开源和社区支持: Nginx 是一个开源平台,因此它的用户非常庞大,因此对于想要学习的新用户和学生来说,可以提供文档、教程和支持。 什么是 Docker 容器以及为什么将它们用于 NGINX? 容器化是基于操作系统的虚拟化,它在用户空间中创建多个虚拟单元,称为容器。容器共享相同的主机内核,但通过操作系统级别的私有命名空间和资源控制机制彼此隔离。与虚拟机管理程序相比,基于容器的虚拟化在虚拟化和隔离方面提供了不同的抽象级别。虚拟机管理程序使用大量硬件,这会导致虚拟化硬件和虚拟设备驱动程序方面的开销。在每个虚拟机实例中,完整的操作系统(例如 Linux、Windows)都在这些虚拟化硬件之上运行。Docker 为运行应用程序提供了一致且隔离的环境,使其成为部署 Nginx 的热门选择。 使用 Docker 容器来运行 NGINX 的好处 以下是使用 … Read more

删除所有容器和镜像

在Docker中,如果我们退出容器时没有停止它,则需要手动停止它,因为它在退出时并没有停止。同样,对于镜像,我们需要从上到下删除它们,因为某些容器或镜像可能依赖于基础镜像。我们可以随时下载基础镜像。因此,最好从当前机器中删除不需要的或悬空的镜像。 Docker 清理 保持 Docker 环境井然有序、高效运行对开发者和运维团队至关重要。在使用容器和镜像时,您的环境很容易变得杂乱无章。定期清理环境并非可有可无,而是必须的,原因如下: 释放磁盘空间:Docker 镜像和容器很快就会占用大量空间,尤其是在您频繁构建新镜像或测试不同应用程序的情况下。随着时间的推移,所有这些未使用的镜像会累积起来,开始占用您的磁盘空间,最终导致系统运行缓慢。定期删除不再需要的文件,可以帮助您的系统平稳运行,并避免存储问题。 提升性能:杂乱的 Docker 环境会降低运行速度。当镜像和容器堆积如山时,简单的命令也可能需要更长时间才能运行。定期清理可以清除不必要的文件,从而提升 Docker 的性能,并提高工作流程的效率。 避免与过时的镜像发生冲突:保留旧镜像可能会导致兼容性问题以及应用程序出现意外问题。如果您最终拥有同一镜像的多个版本,管理依赖项并确保您的应用运行正确的版本将变得更加复杂。清理镜像可以帮助您仅保留正在使用的最新、最安全的版本。 保持开发和生产环境整洁:无论您身处开发环境还是生产环境,保持井然有序对于稳定性和可靠性都至关重要。删除过时的容器和镜像可确保您的团队始终能够访问最相关的版本,从而降低部署过程中出错的风险。 定期清理 Docker 环境是个好主意,尤其是在完成主要开发阶段、在项目之间切换或发现磁盘空间不足时。设置 Docker 清理的维护计划可以帮助您掌握最新动态,并在问题恶化之前将其避免。 如何在 Docker 中删除镜像? 要通过 ImageId/Name删除镜像,我们可以使用以下命令。要了解更多关于如何借助 Dockerfile 构建 Docker 镜像的信息,请参阅Dockerfile 的概念。 docker rmi 要通过 ImageID/Name强制删除 docker 镜像,我们可以使用以下命令。 docker rmi -f 注意:容器运行时,我们无法强制或正常删除图像。 悬挂镜像是指那些既未映射到仓库也未映射到标签的镜像。使用的命令是移除悬挂镜像。要了解更多关于如何标记 Docker 镜像的信息,请参阅Docker 镜像标签。 docker image prune 我们可以删除 Docker Machine 中的所有镜像,以清理系统中不必要的杂乱和空间。无论如何,我们都可以从 Docker 镜像仓库或缓存中获取最新版本或特定版本的镜像。 … Read more

Node.js 的 Docker 容器

Node.js 是一个开源的、异步事件驱动的 JavaScript 运行时,用于运行 JavaScript 应用程序。它广泛用于传统网站和 API 服务器。同时,Docker 容器是一个独立的、可部署的单元,它将应用程序及其依赖项打包在一起,使其具有高度的可扩展性和可维护性。在本文中,我们将为 Node.js 创建一个 Docker 容器,并在该容器上运行一个简单的 express.js 应用程序。 什么是 Docker 容器? Docker 是一个提供 Docker 运行时的开放平台。它使应用程序的开发、运行和部署变得简单易行。Docker 容器因其轻量级且高效利用底层系统资源而广受欢迎。它与虚拟机共享主机操作系统的内核,这使得 Docker 速度更快,能够同时处理多个请求。点击此处了解更多关于Docker的信息。 什么是 Node.js? Node.js 是一个开源且免费的服务器环境。它提供 JavaScript 运行时,以便 JavaScript 应用程序可以在服务器上运行。它还允许JavaScript代码在浏览器之外运行。它还有很多其他功能,例如生成动态页面内容,在服务器上创建、保存和关闭文件,以及在后端处理数据库。 为什么要对 Node.js 使用 Docker 容器? 开发人员面临的问题之一是,应用程序的开发和部署环境可能截然不同。开发人员可能会开发自己的本地系统,而这很可能与应用程序最终部署到的云实例完全不同。 Docker 容器解决了这个问题,它使用了镜像的概念,镜像存储了 Docker 容器在特定时间的记录,就像所有库一样。运行应用程序时需要镜像及其版本。然后,开发人员可以与其他人共享此镜像,以获得与开发人员相同的环境并运行应用程序。 Docker 容器是微服务学习Docker 架构适配的最佳工具。许多公司正在转向 Docker,因为在 Docker 上运行的应用程序更易于维护、易于修改且高度可扩展。 分步 Docker 化 NodeJS 应用程序 步骤 … Read more

使用 Docker 容器实现虚拟化

在这个软件驱动的世界里,无处不在、易于部署且开销最小化是主要要求,而云则迅速占据了各行各业的主导地位。容器正在这片广阔的云空间中崭露头角,全球顶尖的科技和IT机构都依赖这一概念来满足其基础设施需求。 Facebook、谷歌和微软等科技巨头在其精简的流程中使用容器,以便安全轻松地将应用程序部署到云生产环境中。这种使用容器的部署提供了一种技术,可以将应用程序从虚拟化提供的运行时环境中抽象出来。这里要探讨的两个核心概念是: 容器是如何基于虚拟化技术构建的? 他们如何提供虚拟机的替代方案? 如何利用虚拟化技术构建容器? 为了解答容器如何实现虚拟化,让我们详细讨论一下什么是虚拟化,以及容器如何与这一概念相辅相成。虚拟化是一种技术,它本质上创造了一种资源的幻象,例如桌面、存储、网络或操作系统。设备、应用程序和用户拥有与这些资源交互的能力。这种幻象也称为虚拟化,它扩展了传统系统的功能,而传统系统的功能受限于其自身的物理资源。现在,容器为部署在其中的应用程序实现了这种虚拟化。容器中的应用程序独立运行,与任何物理资源隔离。容器虚拟化操作系统、CPU、内存、存储和网络资源,从而提供了一个可根据需要扩展或缩减的受控环境。容器还将应用程序及其依赖项和必要的文件打包在一起,这使得应用程序可以部署在任何环境中,而无需配置服务器、硬件或软件。这听起来仍然类似于通过虚拟机实现的虚拟化,对吧?因此,在进一步了解容器的功能之前,让我们先来了解一下容器与虚拟机的区别。 他们如何提供虚拟机的替代方案? 虚拟机是硬件虚拟化的一种形式。硬件在逻辑上与其他资源分离。硬件可以是任何系统,例如一台桌面系统(具有硬件和独立的操作系统),称为主机。在主机上可以运行多个虚拟机或客户机,每个虚拟机都拥有独立的操作系统。这通过称为虚拟机管理程序的固件实现。 容器与虚拟机类似,运行在主机上。它们也可以根据需要进行控制,并将应用程序与运行时环境隔离。然而,容器的目标是操作系统虚拟化。与虚拟机不同,在容器化系统中,客户操作系统无需安装在主机系统上。相反,所有包含应用程序代码的容器实例共享底层主机操作系统。这使得容器变得轻量级,并减少了与虚拟机相关的操作系统开销,例如修补、升级、驱动程序支持等。此外,它还减少了单个操作系统对主机资源的消耗。 Docker 和虚拟机(VM)有什么区别? 以下是Docker和 VM 之间的主要区别: 方面 Docker 虚拟机(VM) 隔离 Docker 是轻量级平台,它使用容器化来实现隔离环境。 虚拟机配备重型软件,为完整的操作系统隔离提供完全虚拟化。 资源使用情况 它消耗更少的主机操作系统内核资源,并更有效地利用它们 VM 在有效利用资源方面效率较低,每个 VM 使用自己的 OS 内核并消耗更多资源。 开始时间 这些在设置操作系统平台(容器)方面速度更快,通常只需几秒钟。 启动时间较慢,通常需要几分钟来设置实例。 可扩展性 在 Docker 中扩展容器很容易,占用空间较小。 扩展实例时将会占用大量资源。 可移植性 Docker 提供高度可移植、在不同环境中保持一致的容器化应用程序。 它们也是可移植的,但由于它封装了整个操作系统,所以会更重。 用例 它对于微服务、轻量级应用程序和容器化环境非常有效。 它适合在不同的环境中运行多个应用程序。 Docker 和 VM 之间的相似之处 以下是 Docker 和虚拟机之间的主要相似之处: 隔离环境: Docker 和虚拟机都为应用程序提供了一定程度的隔离。Docker 通过容器化隔离进程来实现隔离,而 … Read more

使用 Docker 进行容器化

Docker是一个容器化平台,用于将您的应用程序及其所有依赖项以镜像的形式打包在一起,以确保您的应用程序在任何开发、测试或生产环境中都能无缝运行。Docker 是一种旨在使使用容器创建、部署和运行应用程序变得更容易的工具。 Docker是世界领先的容器平台。它由一家名为Dotcloud , Inc的公司于2013 年推出,该公司后来更名为Docker , Inc。它是用Go 语言编写的。Docker 推出仅六年,但社区就已经从虚拟机转向它。Docker旨在让开发人员和系统管理员都受益,这使其成为许多DevOps 工具链的一部分。开发人员可以编写代码而不必担心测试和生产环境。系统管理员不必担心基础设施,因为Docker可以轻松扩展和缩减系统数量。Docker 在软件开发周期的部署阶段发挥作用。 容器化 容器化是基于操作系统的虚拟化,它在用户空间中创建多个虚拟单元,称为容器。容器共享相同的主机内核,但通过操作系统级别的私有命名空间和资源控制机制彼此隔离。与虚拟机管理程序相比,基于容器的虚拟化在虚拟化和隔离方面提供了不同级别的抽象。虚拟机管理程序使用大量硬件,这会导致虚拟化硬件和虚拟设备驱动程序方面的开销。完整的操作系统(例如Linux,Windows)在每个虚拟机实例中的虚拟化硬件之上运行。 但相比之下,容器在操作系统级别实现进程隔离,从而避免了这种开销。这些容器在底层主机的相同共享操作系统内核上运行,每个容器内可以运行一个或多个进程。在容器中,您不必预先分配任何RAM,它是在创建容器期间动态分配的,而在VM中,您需要先预分配内存,然后再创建虚拟机。与虚拟机相比,容器化具有更好的资源利用率和更短的启动过程。它是虚拟化的下一代发展方向。 容器几乎可以在任何地方运行,大大简化了开发和部署:在Linux、Windows和Mac 操作系统上;在虚拟机或裸机上;在开发人员的机器上或本地数据中心;当然,在公共云中。容器虚拟化CPU、内存、存储和网络资源 操作系统级别,为开发人员提供与其他应用程序逻辑隔离的操作系统沙盒视图。Docker是最流行的开源容器格式,并得到Google Cloud PlatformGoogle Kubernetes Engine****的支持。 Docker 架构 Docker 架构由Docker 客户端、在Docker Host上运行的Docker Daemon和Docker Hub存储库组成。Docker 具有客户端-服务器架构,其中客户端使用REST API、Socket IO和TCP的组合与在 Docker Host 上运行的 Docker Daemon 进行通信。如果我们必须构建Docker 镜像,那么我们使用客户端对 Docker Daemon 执行构建命令,然后 Docker Daemon 根据给定的输入构建镜像并将其保存到Docker 注册表中。如果不想创建镜像,则只需从客户端执行pull 命令,然后 Docker Daemon 将从 Docker Hub 中提取镜像,最后如果我们想运行镜像,则从客户端执行run 命令,这将创建容器****。 Docker … Read more

创建私有存储库并将镜像推送到该私有存储库

在本文中,我们将演示如何创建 Docker Hub 帐户,以及如何从 Docker Hub 仓库拉取镜像,并将镜像推送到 Docker Hub 仓库。由于 Docker Hub 是一个任何人都可以访问的公共仓库,因此用户可以创建自己的私有仓库,并将镜像推送到私有仓库。为此,Docker 本身提供了一个注册容器。 要求 在各自的操作系统中安装 docker 软件。 您想要推送到私有存储库的 Docker 容器中镜像。 创建私有仓库并推送、拉取镜像的步骤: 步骤1: 第一步,使用docker run命令下载私有registry。 sudo docker -d -p 5000:5000 –name registry:2 命令说明: -d:此选项用于以分离模式运行容器,即容器可以在后台运行。 -p:此选项用于将我们的端口号与本地主机上的 5000 个端口号映射。 registry:它是docker提供的用于托管我们私有存储库的容器。 2:它是注册表的标签,用于在 docker 主机上进行区分。 您可以使用docker ps命令查看正在运行的registry容器。 sudo docker ps 第 2 步:在此步骤中,我们将标记现有图像,以便将该图像推送到本地存储库。 sudo docker tag image_id tag_name 命令说明: … Read more

Docker 私有镜像仓库

Docker 私有镜像仓库是您自己的仓库,您可以在其中存储自己的 Docker 镜像并与他人共享。Docker 镜像仓库基本上由 Docker Repositories组成。在 Docker 仓库中,您可以维护特定版本的Docker 镜像。 什么是 Docker Registry? Docker Registry是您自己的私有仓库,您可以在其中存储自己的 Docker 镜像并与他人共享。Docker 镜像仓库基本上由 Docker Repositories组成。在 Docker 仓库中,您可以维护 Docker 镜像的特定版本。DockerHub 是用于拉取 Docker 镜像的公共仓库。DockerHub是一个公共镜像仓库,任何人都可以拉取存储在 DockerHub 中的镜像。 公共和私有 Docker 镜像仓库 Docker Hub 提供的两种仓库类型是公共仓库和私有仓库。由于我们的大多数 Docker 镜像都包含源代码以及应用程序所需的所有依赖项,因此任何使用我们存储在 Docker Hub 公共仓库中的 Docker 镜像的用户都可以访问公共仓库,这对企业来说很不利。因此,Docker Hub 提供了付费的私有仓库;但是,由于云存储价格昂贵,许多镜像无法存储在那里。 我们可以在本地计算机上创建一个免费的个人 Docker 镜像仓库。我们可以使用私有镜像仓库来调整身份验证、负载均衡以及其他配置。这样,我们就可以将镜像保存在一个私密的地方。 设置私有 Docker 镜像仓库的步骤 按照以下步骤设置 docker 注册表: 运行私有 Docker … Read more

使用 Pi-hole 和 Docker 创建您自己的安全家庭网络

Pi-hole 是一款基于 Linux 的 Web 应用,可用于屏蔽网络中的垃圾广告和互联网跟踪系统。它使用起来非常简单,非常适合家庭和小型办公网络。它完全免费且开源。它还允许您管理可访问性和阻止列表。它以图形方式清晰地显示网络查询。Docker 是一款基于容器化技术的工具,可用于启动满足各种需求的容器,例如 Web 服务器、DNS 服务器等等。   Pi-hole架构 如何设置 pi-hole 和 Docker? 步骤 1  打开终端并启动docker   sudo systemctl start docker 输入命令从docker hub 拉取 pinhole 镜像   sudo docker pull pihole/pihole 第 2 步:如果您不使用 Ubuntu,请跳过此步骤    sudo systemctl stop systemd-resolved.service sudo systemctl disable systemd-resolved.service 步骤 3  将 DNS 更改为其他名称,例如 google   sudo … Read more

Docker 默认的桥接网络

Docker 允许您在多个 Docker 容器之间创建专用通道,从而创建一个可以共享文件和其他资源的容器网络。这称为 Docker 网络。您可以使用各种网络驱动程序创建 Docker 网络,包括桥接驱动程序、McVLAN 驱动程序等。默认情况下,如果您在创建网络时未指定驱动程序,系统将自动选择默认的桥接驱动程序。桥接驱动程序是单主机网络驱动程序,因此其范围仅限于本地。 在本文中,我们将讨论如何创建、管理和使用 Docker 桥接网络。为此,您需要一台安装有Docker的Linux主机。闲话少叙,让我们深入探讨 Docker 桥接网络。 桥接网络驱动程序 网桥网络是一个默认网络,如果创建容器时若未指定任何网络,容器将自动部署在该默认网络中。部署在同一网络中的容器可以相互通信,而不在同一网络中的容器则无法在没有适当授权的情况下相互通信。若在创建容器时未主动创建或指定网络,Docker会默认使用该桥接网络。。要列出 Docker 中的网络,您可以使用以下命令。 docker network ls Docker 网络的类型 有三个主要的默认网络,如下所述,要了解有关 Docker 网络的更多信息,请参阅Docker 网络。 Bridge(默认) Host None 将容器连接到用户定义的桥接网络 如果容器是在默认桥接网络中创建的,则通信将仅通过容器的 IP 地址进行。使用容器名称 (hostName) 无法进行通信。要验证这一点,请进入 Java Web 应用容器,并使用容器名称和 IP 地址对 Maven Web 应用容器进行 ping 操作。使用 IP 地址进行 ping 操作时,容器可以正常工作,但无法使用容器名称进行通信。对于容器,开发人员不应基于 IP 地址编写连接代码。由于容器的 IP 地址是动态的,因此 IP … Read more