如何将 MongoDB 作为 Docker 容器运行?

MongoDB 是一个开源的面向文档的数据库,旨在存储海量数据,并允许您高效地处理这些数据。它被归类为 NoSQL(非 SQL)数据库,因为 MongoDB 中的数据存储和检索并非以表的形式进行。 在本指南中,我们将学习如何将 MongoDB 作为 docker 容器运行。首先,让我们快速了解一下什么是 docker 容器。 什么是 Docker 容器? 容器化是基于操作系统的虚拟化,它在用户空间中创建多个虚拟单元,称为容器。容器共享相同的主机内核,但通过操作系统级别的私有命名空间和资源控制机制彼此隔离。 与虚拟机管理程序相比,基于容器的虚拟化在虚拟化和隔离方面提供了不同的抽象级别。虚拟机管理程序使用大量硬件,这会导致虚拟化硬件和虚拟设备驱动程序方面的开销。在每个虚拟机实例中,完整的操作系统(例如 Linux、Windows)都运行在此虚拟化硬件之上。要了解更多关于 Docker 容器的信息,请参阅使用 Docker 进行容器化。 要以容器的形式部署应用程序,您需要构建一个docker 镜像,通过该镜像您可以将其作为容器运行,要构建镜像,您需要编写Dockerfile。 MongoDB 可以在 Docker 容器中运行吗? 是的,您可以将 MongoDB 作为 Docker 容器运行。DockerHub 中提供两种 MongoDB 镜像:社区版和企业版。您可以根据组织的需求选择其中一种作为 Docker 容器运行,或者您也可以根据自身需求编写 Dockerfile 来构建自己的 Docker 镜像。要了解 Dockerfile 的语法,请参阅什么是 Dockerfile 语法? 如何在 Docker 上设置 MongoDB 要将 MongoDB 与 Docker … Read more

将文件复制到 Docker 容器或从 Docker 容器中复制文件

在开发 Docker 项目时,您可能需要在 Docker 容器和本地计算机之间复制文件。使用特定的 Docker 构建上下文构建 Docker 镜像后,如果只是为了在容器中添加一些小文件或文件夹而反复构建镜像,可能会非常耗时,因为 Docker 镜像通常非常大。 Docker 为我们提供了非常有用的复制命令,使我们能够无缝地在 Docker 容器和本地系统之间复制文件。在本文中,我们将通过实际示例讨论如何使用Docker cp命令。 什么是 Dockerfile? Dockerfile是一个文本文件,包含一系列用于构建 Docker 镜像的指令。我们在此指定基础镜像、应用程序代码、依赖项以及维护和运行代码所需的配置等指令。它有助于确保在不同环境中部署应用程序时的一致性和可重复性。这使得 Dockerfile 对于持续集成和持续部署( CI/CD) 工作流程至关重要。 什么是 Docker 容器? Docker 容器运行包含应用程序代码的Docker 镜像进程。它通常被定义为轻量级的可执行包。它包含运行软件所需的所有内容(例如代码、运行时、库和设置)。这些内容具有高度可移植性,可以轻松地在开发、测试和生产环境中一致地部署应用程序。这些内容对于微服务架构促进高效的资源利用和可扩展性至关重要。 Docker 容器 cp docker container cp命令方便我们在 docker 容器和主机系统之间复制文件或目录。它有助于在容器之间传输数据、配置文件或日志,而无需重新启动或重建容器。它方便我们轻松地进行数据交换、开发和生产环境。 句法 docker container cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH Docker 容器 cp 的选项 以下是docker容器cp的选项: 选项 描述 -L, –follow-link … Read more

如何在 Docker 容器内安装 Linux 软件包?

一旦你了解如何从 Docker 注册表中拉取基础 Docker 镜像,你现在就可以直接从 Docker Hub 拉取操作系统发行版,例如 Ubuntu、CentOS 等。然而,你拉取的操作系统镜像仅包含原始文件系统,其中未安装任何软件包。当你在 Docker 容器中开展项目时,无论是在开发阶段一开始还是在开发过程中,你肯定都需要一些库和软件包。 在本文中,我们将了解如何使用两种不同的方法在 Docker 容器内安装软件包和库。我们还将尝试在 Ubuntu Docker 容器内安装 Firefox 和 vim 文本编辑器。 方法 1: 使用命令行界面 步骤 1:打开本地系统的终端,并从 Docker 镜像仓库 (Registry) 运行 Ubuntu Docker 镜像。如果您的系统之前没有执行过拉取操作,它将开始从镜像仓库 (Registry) 拉取镜像。 sudo docker run -it ubuntu bash 步骤 2:现在,您已经打开了 Ubuntu Docker 容器的 bash。要安装任何软件包,您首先需要更新操作系统。 apt-get -y update 更新容器 步骤 3:更新 Docker … Read more

虚拟机和容器之间的区别

虚拟机和容器是在单一平台上部署多个隔离服务的两种方式。 虚拟机: 它运行在名为虚拟机管理程序 (hypervisor) 的模拟软件之上,该软件位于硬件和虚拟机之间。虚拟机管理程序是实现虚拟化的关键。它管理物理资源与虚拟机的共享。每个虚拟机都运行其客户操作系统。与容器相比,它们的灵活性和可移植性较差。 容器: 它位于物理服务器及其主机操作系统之上。它们共享一个通用的操作系统,需要维护和维护以修复错误和补丁。它们比虚拟机更灵活,可移植性更高。 让我们看看虚拟机和容器之间的区别。 序号 虚拟机(VM) 容器 1 VM 是一种软件,它允许您在其中安装其他软件,以便您虚拟地控制它,而不是直接在计算机上安装软件。 容器是一种允许应用程序独立实现不同功能的软件。 2. 在 VM 系统或虚拟机管理程序上运行的应用程序可以运行不同的操作系统。 而在容器环境中运行的应用程序共享单个操作系统。 3. VM 虚拟化计算机系统,即其硬件。 而容器只是虚拟化了操作系统,或者说软件。 4. VM 大小非常大,通常以 GB 为单位。 虽然容器的大小非常小,通常只有几百兆字节,但可能会根据用途而有所不同。 5. VM 的运行时间比容器更长,具体时间取决于底层硬件。 而容器的运行时间却要少得多。 6. VM 使用了大量的系统内存。 而容器所需的内存却很少。 7. VM 更安全,因为底层硬件不在进程之间共享。 而容器的安全性较低,因为虚拟化是基于软件的,并且内存是共享的。 8. 当我们需要所有操作系统资源来运行各种应用程序时,虚拟机很有用。 当我们需要使用最少的服务器来最大化运行应用程序时,容器很有用。 9. 1 型虚拟机管理程序的示例包括 KVM、Xen 和 VMware。Virtualbox 是 2 型虚拟机管理程序 容器的示例有 … Read more

Docker 镜像和容器的区别

Docker 使用主机上的 Docker 引擎构建镜像并运行容器。Docker 容器包含在不同环境中运行应用程序所需的所有依赖项和软件。 什么是 Docker 镜像? 镜像和容器的概念就像类和对象一样,对象是类的实例,而类是对象的蓝图。虚拟机和 Docker 中的镜像有所不同。在虚拟机中,镜像只是正在运行的虚拟机在不同时间点的快照,而 Docker 镜像则略有不同。最重要也是最主要的区别是 Docker 镜像是不可变的,也就是说它们无法更改。在现实世界中,由于环境不同,软件在一台计算机上可以运行,但在其他计算机上却无法运行的情况经常发生。Docker 镜像彻底解决了这个问题,使用 Docker 镜像,应用程序将在每个人的电脑上以相同的方式运行。团队中的每个开发人员都将拥有完全相同的开发实例。每个测试实例都与开发实例完全相同。您的生产实例与测试实例完全相同。此外,世界各地的开发人员可以在名为DockerHUB的平台上共享他们的 Docker 镜像。 什么是 Docker 容器? 它们实际上是 Docker虚拟机,但通常称为 Docker 容器。如果 Docker 镜像是房屋地图,那么 Docker 容器就是实际建造的房屋,换句话说,我们可以称其为镜像实例。根据官方网站的说法,容器是镜像的可运行实例。您可以使用 Docker API 或 CLI 创建、启动、停止、移动或删除容器。您可以将容器连接到一个或多个网络,将存储连接到它,甚至可以根据其当前状态创建新镜像。应用程序使用彼此之间以及与运行它们的主机之间自我隔离的容器集群运行。 示例:如果后端应用程序在端口 8000 的 Docker 容器上运行,并且您尝试从主机访问它,则您将无法访问它,因为容器是自我隔离的,在这种情况下,您必须在某个端口明确公开您的应用程序并将您的机器端口连接到该端口。 运行 Docker 容器 docker run –publish 8000:8080 –detach –name alias_name application_name:1.0 这里,容器中运行在 8080 端口的应用程序连接到主机的 … Read more

在 Docker 容器内挂载卷

当您使用 Docker 容器构建微服务架构时,需要创建多个 Docker 容器来创建和测试应用程序的不同组件。现在,其中一些组件可能需要共享文件和目录。如果您将相同的文件分别复制到所有容器中,可能会导致镜像大小不必要的增加,而且,在一个容器中更改文件不会在其他容器中对同一文件进行相应的更改。 因此,您需要一个可以挂载到多个Docker 容器上的共享目录或卷,并且所有容器都对某个文件或目录拥有共享访问权限。Docker 允许您在多个容器中挂载共享卷。在本文中,我们将把一个卷挂载到不同的容器,并检查文件中的更改是否在所有容器之间共享。 卷 在 Docker 中,卷是以容器形式部署有状态集应用程序的首选方式。您可以在 Docker 生命周期之外管理和持久化 Docker 数据。与绑定挂载不同,卷完全由 Docker 管理。Docker 卷允许您在 Docker 容器和 Docker 主机之间共享数据。它们是 Docker 中的两种卷类型。您将数据存储在 Docker 中。 命名卷。 绑定卷。 创建和管理卷 | 分步说明 要了解有关 Docker 命令的更多信息,请参阅Docker – 指令命令。 步骤 1:显示所有现有的 Docker 卷 要显示所有现有的Docker 卷,可以使用如下 list 命令。 sudo docker volume ls 步骤2:创建卷 要创建新的 Docker 卷,可以使用卷创建命令。 sudo docker … Read more

如何将容器镜像推送到 Docker 存储库?

在本文中,我们将研究如何将容器镜像推送到 Docker 仓库。我们将使用 Docker Hub 作为容器镜像仓库,并将 Docker 镜像推送到那里。 按照以下步骤将容器镜像推送到 Docker 存储库: 步骤 1:创建 Docker 帐户 首先,您需要确保已注册 Docker 帐户。您可以轻松访问 hub.docker.com,输入 Docker ID、电子邮件地址和密码。这就是您需要做的全部。此 Docker 帐户完全免费,您无需支付任何费用。请确保已登录。登录后,您将进入仪表板。如您所见,我们尚未将任何容器推送到我的注册表: 第 2 步:从命令行登录 Docker 首先,我们将输入以下命令。现在,我们的凭据已经过身份验证,但如果您的凭据尚未添加,这将要求您输入注册 Docker Hub 帐户时创建的 Docker ID 和密码。 docker login 步骤 3:检查本地镜像 接下来我们需要做的是选择要推送的镜像。因此,我们将输入以下命令: docker images 我们将使用之前为本文创建的 awesomeapp镜像。 步骤 4:标记并推送您的镜像 要将镜像推送到 Docker Hub,请使用以下命令和适当的标签: docker push awesomeapp/firstimage 现在,它所做的是,获取我们本地机器上的镜像并将其推送到 Docker Hub。 步骤 … Read more

Docker 容器链接

Docker 是一套平台即服务 (PaaS) 产品,它使用操作系统级可视化技术,以名为容器的软件包形式交付软件。在应用程序开发过程中,有时我们需要两个容器能够相互通信。两个容器的服务可能相互依赖。这可以通过容器链接 (Container Linking) 来实现。 以前,容器是通过使用“–link”标志来使用的,但现在已被弃用并被视为遗留命令。 与链接系统连接 有两种方式可以链接容器 默认方式 用户自定义方式 要了解两个容器之间自定义网络的形成,我们需要了解 docker 如何自动分配网络。 默认方式 一旦我们安装了docker并创建了一个容器,docker就会被分配一个默认的桥接网络,名为Docker0。IP地址范围是172.17.0.0/16(其中172.17.0.1分配给接口)。 现在,我们将创建的容器将在 172.17.0.2/16 范围内获取其 IP。 步骤1:创建两个新容器,webcon和dbcon $ docker run -it –name webcon -d httpd $ docker run -it –name dbcon -e MYSQL_ROOT_PASSWORD=1234 -d mysql 您可以使用任何镜像,在我们的例子中我们将使用MySQL和 HTTPD 镜像。 第 2 步:检查新容器的 IP。 $ docker network inspect bridge 在这些IP的帮助下,docker主机与容器建立连接。 步骤 3:进入 … Read more

如何为 Docker 容器提供静态 IP?

Docker是一个开源项目,可以更轻松地创建、部署和运行应用程序。它提供了一个轻量级的环境来运行您的应用程序。 它是一个在您的计算机内部创建隔离环境的工具。将 Docker 想象成您家中的私人房间。与家人住在一起,您必须共用电视、桌子、椅子等。一旦您进入房间,一切都是您的。您不必与他人分享,并且可以感受到隐私,尽管您的家人可能会听到您的声音并告诉您要冷静。Docker 就像您的房间。Docker 可以与主机保持私密,尽管在某些部分它由主机监视和控制。 让我们来看看我们的问题陈述:我们要创建一个具有静态 IP 的 Docker 容器。 假设我们已经配置好了服务器,并连接了 CICD 工具,这些工具会更新应用程序并重新启动完整的 Docker 环境。但是,随着新环境的创建,IP 地址肯定会发生变化。但我们的用例是,我们不想更改 IP 地址,因为可能其他应用程序依赖于它,如果 IP 地址发生变化,那么该应用程序就会停止工作。 解决方案: 步骤 1:在服务器中配置 Docker。 第 2 步: 创建带有子网的网络(CIDR)。 步骤 3:使用自定义静态 IP 将容器部署到此网络 指定: 网络名称(创建网络时的名称) 指定 IP(位于该网络下) 输出:

使用 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