什么是 docker?如何在 docker 中运行任何应用程序?
Docker 是一个框架,它使用容器化技术将开发人员的应用程序运行在称为容器的独立标准化单元中。它可以帮助开发人员使用容器构建、测试和部署应用程序。要透彻了解 Docker,我们必须先了解什么是容器化。
什么是容器化?
容器化是一种虚拟化形式,可以将应用程序及其依赖关系打包并隔离到一个容器中。容器包括应用程序代码、运行时、库和系统工具,并确保应用程序在不同环境下运行一致。
为什么要将应用程序容器化?
- 可移植性:容器可以在开发、测试和生产等各种环境中一致运行。这种可移植性可确保应用程序无论部署在哪里,都能以相同的方式运行。
- 一致性:通过容器化,开发人员和运营团队可以在相同的环境中工作,从而减少 “在我的机器上也能运行 “的问题。这种一致性简化了开发和部署流程。由于所有的依赖关系都定义在一个单一的 docker 文件中。与操作系统无关。
- 资源效率:与传统的虚拟机相比,容器更加轻量级,因为它们托管在操作系统内核上。它们启动速度快,占用资源少。
- 易于设置和删除应用程序所需的文件(因为应用程序的 Docker 文件是通用的)。例如:如果项目使用 SQL,那么你可以在系统中为应用程序设置 SQL。一旦应用完成,就必须删除系统中的整个 SQL,但使用容器化后,系统不会安装 SQL,但隔离环境容器可以轻松安装,只需一条命令即可删除。
- 只需修改 docker 文件,然后自动部署,这让部署变得更容易。
既然我们已经对容器化有了正确的认识,那么我们就必须了解有哪些 docker 组件:
Docker 有三个主要组件:
- Docker-CLI :这是命令行工具,通过它我们可以控制端口、代码库、应用程序行为、容器等。
- 守护引擎(Daemon Engine):这是 Docker 的核心组件。我们所有的容器都由这个名为守护进程的引擎来运行。
- Docker Hub(注册中心):就像 Git Hub 一样,Docker Hub 也是我们部署项目镜像的平台。一旦映像上传到 Docker Hub,Aws 或任何服务都可以从 Docker Hub 获取并运行。
Docker Image 和 Docker Container 有什么不同?
- Docker 镜像:它是一个模板,可以据此创建一致的容器。镜像是新容器的初始文件系统状态。Docker 镜像是使用
- Docker 文件(用于构建镜像的脚本)创建的。Docker 容器是该镜像的动态可运行实例。映像只创建一次。
- Docker 容器:是一个隔离的环境,在其中运行应用程序及其依赖项。容器会更改底层应用程序文件。Docker 容器可创建多次。
现在,我们已经了解了 Docker 和容器化的基本知识,我们将创建第一个 Docker 镜像,并在 docker 中运行我们的应用程序。但在此之前,我们需要在系统中安装 docker。你可以阅读相关说明,并根据自己的操作系统从这里下载 docker:docker.com。
你可以在终端执行 docker --version
命令,检查系统中是否安装了 docker。它应该会返回 docker 的版本。
创建 Docker 镜像
在系统中安装好 docker 后,选择一个项目来创建 docker 镜像。我在这里使用的是 Next 项目。
- 新建一个名为 “dockerfile “的文件,并在其中添加以下代码:
# Use a base image with Node.js pre-installed FROM node:18-alpine AS base # Set the working directory inside the container WORKDIR /app # Copy application files into the container COPY . . # Install dependencies RUN npm install # Expose the application port EXPOSE 8000 # Define the command to run the application CMD ["npm", "run" , "dev"]
2.现在运行你的
一个 docker 镜像。
docker build . -t next-project
。它会在构建后创建一个 docker 镜像。
3.现在,你可以通过执行 docker images 来检查镜像,你可以在这里看到新创建的镜像。
运行 Docker 镜像
在项目根文件中运行
docker run -p 8000:8000 next-project
。现在,你就可以访问你的应用程序了,它将暴露在 dockerfile 端口上。阅读余下内容