
Docker 是一种开源的平台,用于开发、交付和运行应用程序。通过使用操作系统级别的虚拟化,Docker 可以将软件包裹在一个称为「容器」的标准化单元中。这可以确保软件在任何环境中都能够运行,包括本地计算机、数据中心或云端。
以下是一个详细的 Docker 教程,分步骤指导你开始使用 Docker。
Docker 的基本概念
镜像(Image): Docker 镜像是一个只读模板,包含创建 Docker 容器所需的所有指令。镜像可以从 Docker Hub(一个巨大的在线库)下载使用,也可以根据需要自定义。
容器(Container): 容器是镜像的一个实例,包含应用程序及其所有依赖项。每个容器是相互隔离和安全的,能够在任何一个 Docker 环境中运行。
仓库(Repository): 仓库是存储镜像的地方,分为公共仓库和私有仓库。Docker Hub 是最常用的公共仓库,任何人都可以使用。
Dockerfile: Dockerfile 是一个包含一系列指令的文本文件,用于构建 Docker 镜像。例如,FROM 指令用于指定基础镜像,RUN 指令用于执行命令。
Docker 的安装
Docker 可以在各种操作系统上运行,包括 Windows、macOS 和 Linux。在这里,我将简要说明如何在这些平台上安装 Docker。
Windows:
下载 Docker Desktop 安装程序,从 Docker 的官方页面。 双击安装程序并按照提示完成安装。 运行 Docker Desktop,确保 Docker 已启动。macOS:
同样,从 Docker 的官方网站下载 Docker Desktop for Mac。 打开安装包,并将 Docker 图标拖到应用程序文件夹。 启动 Docker Desktop,确保它正在运行。Linux:
可以通过包管理器如 apt 来安装 Docker。在 Ubuntu 上,运行以下命令: sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io 启动 Docker 服务: sudo systemctl enable docker sudo systemctl start docker使用 Docker
在完成安装之后,我们可以运行*个容器。
运行一个简单的容器: 运行 Docker 官方提供的 hello-world 镜像来验证您的安装:
docker run hello-world这将下载镜像(如果本地没有的话),并启动容器,打印出 "Hello from Docker!" 信息。
下载和运行特定应用: 比方说,你想运行一个 Nginx 服务器,可以直接拉取并运行:
docker run -d -p 80:80 nginx这里-d参数告诉 Docker 在后台运行容器,-p指定将主机的 80 端口映射到容器的 80 端口。
列出运行中的容器: 您可以使用以下命令列出当前正在运行的容器:
docker ps停止一个容器: 找到对应的容器 ID,然后使用以下命令停止它:
docker stop <CONTAINER_ID>删除一个容器: 可以使用以下命令删除容器:
docker rm <CONTAINER_ID>这里的容器 ID 可以通过 docker ps -a 命令找到。
Dockerfile 和构建镜像
为应用程序创建自定义的 Docker 镜像需要编写 Dockerfile。
创建 Dockerfile: 在项目目录下新建一个 Dockerfile,例如:
# 使用官方的 Node.js 镜像作为基础镜像 FROM node:14 # 设置工作目录 WORKDIR /app # 复制 package.json 和 package-lock.json COPY package*.json ./ # 安装项目依赖 RUN npm install # 复制项目文件 COPY . . # 规定容器启动后要执行的命令 CMD ["node", "app.js"]构建镜像: 在包含 Dockerfile 的目录下,运行以下命令来构建镜像:
docker build -t my-node-app .这里的 -t 标记用于指定镜像名称,后面的点代表 Dockerfile 当前路径。
运行镜像: 使用构建好的镜像运行容器:
docker run -d -p 3000:3000 my-node-appDocker Compose
对于多容器的应用程序,Docker 提供了一个工具叫做 Docker Compose,通过定义一个 docker-compose.yml 文件,您可以同时启动多个服务。
创建 docker-compose.yml: 假设您有一个 Node.js 应用程序和一个数据库服务,可以创建以下配置文件:
version: 3.8 services: web: build: . ports: - "3000:3000" database: image: mongo ports: - "27017:27017"启动服务: 在配置文件所在目录运行以下命令:
docker-compose up停止服务: 使用以下命令停止运行的服务:
docker-compose down总结
Docker 通过将应用程序及其所有依赖项封装到一个标准化的单元中,极大地简化了应用程序的部署过程。它不仅提高了软件的可移植性,还减少了开发和运维之间的摩擦。无论您是在本地开发,还是在生产环境中部署,Docker 都能为您提供一种高效、便捷的解决方案。
这个简短的教程只是 Docker 世界的一部分,其中还包含更多高级功能,如 Docker 网络、数据卷和多阶段构建等。希望这能帮助你迈出 Docker 学习的*步。