使用 Docker 容器:入门指南 – wiki大全

使用 Docker 容器:入门指南

在现代软件开发中,部署和管理应用程序的复杂性日益增加。为了解决这些挑战,Docker 应运而生,成为了一种领先的容器化技术。本文将为您详细介绍 Docker 容器,包括其基本概念、安装方法、常用命令以及一个简单的实践示例,帮助您快速入门 Docker 的世界。

1. 什么是 Docker?

Docker 是一个开源平台,用于开发、交付和运行应用程序。它通过将应用程序及其所有依赖项(包括库、系统工具、代码和运行时)打包到一个称为容器的标准化单元中,从而实现了应用程序的轻量级、可移植和自给自足。

核心优势:

  • 环境一致性:无论您的应用程序在开发、测试还是生产环境中运行,Docker 都能确保其运行环境的一致性,从而消除“在我的机器上可以运行”的问题。
  • 快速部署:容器启动速度快,可以在几秒钟内完成应用程序的部署和扩展。
  • 资源隔离:容器之间相互隔离,每个容器都有自己的文件系统、进程空间和网络接口,互不干扰。
  • 轻量级:与虚拟机不同,容器共享宿主机的操作系统内核,因此更加轻量级,启动更快,占用的资源更少。
  • 可移植性:容器可以在任何支持 Docker 的环境中运行,无论是本地机器、虚拟机还是云平台。

2. Docker 核心概念

在深入了解 Docker 之前,我们需要理解几个核心概念:

  • Docker 镜像 (Image):镜像是一个只读的模板,包含了创建 Docker 容器所需的一切,包括应用程序代码、运行时、库、环境变量和配置文件。您可以将镜像理解为类的定义。
  • Docker 容器 (Container):容器是 Docker 镜像的可运行实例。每个容器都是一个独立的、隔离的环境,拥有自己的文件系统、CPU、内存和网络资源。容器是实际运行的应用程序,您可以将其理解为类的实例。
  • Dockerfile:Dockerfile 是一个文本文件,包含了一系列指令,用于自动化地构建 Docker 镜像。通过 Dockerfile,您可以定义镜像的各个层次、安装依赖、暴露端口等。
  • Docker Hub:Docker Hub 是 Docker 官方提供的公共镜像仓库,用户可以在其中查找、共享和存储 Docker 镜像。它类似于 GitHub,用于存放代码仓库。

3. Docker 安装

安装 Docker 最简单的方式是下载并安装 Docker Desktop。它包含了 Docker Engine、CLI、Docker Compose、Kubernetes 等组件,并提供了一个图形用户界面,方便管理。

  1. 访问 Docker 官网:打开浏览器,访问 https://www.docker.com/products/docker-desktop/
  2. 下载安装包:根据您的操作系统(Windows、macOS 或 Linux)选择对应的 Docker Desktop 版本并下载。
  3. 运行安装程序
    • Windows/macOS:双击下载的 .exe.dmg 文件,按照安装向导的指示完成安装。在 Windows 上,可能需要启用 WSL 2 (Windows Subsystem for Linux 2)。
    • Linux:根据您的 Linux 发行版,遵循官网提供的详细安装指南。
  4. 启动 Docker Desktop:安装完成后,启动 Docker Desktop 应用程序。首次启动时,它可能会执行一些初始化操作。
  5. 验证安装:打开您的终端或命令行工具,运行以下命令:
    bash
    docker --version
    docker run hello-world

    如果 docker --version 显示了 Docker 的版本信息,并且 docker run hello-world 成功运行并输出了欢迎信息,则表明 Docker 已成功安装并正常运行。

4. Docker 常用命令

掌握以下常用 Docker 命令是高效使用 Docker 的关键:

  • docker --version:显示 Docker 客户端和服务器版本信息。
  • docker pull [镜像名称]:从 Docker Hub 或其他镜像仓库拉取(下载)指定的 Docker 镜像。
    • 示例:docker pull ubuntu:latest (拉取最新版 Ubuntu 镜像)
  • docker images:列出本地所有已下载的 Docker 镜像。
  • docker run [选项] [镜像名称] [命令]:基于指定的镜像创建一个新的容器并运行它。
    • -p <宿主机端口>:<容器端口>:将容器的端口映射到宿主机的端口,以便外部访问。
    • -d:在后台运行容器(分离模式)。
    • --name <容器名称>:为容器指定一个易于识别的名称。
    • 示例:docker run -p 80:80 --name my-web-app -d nginx (以后台模式运行 Nginx 容器,并将宿主机的 80 端口映射到容器的 80 端口)
  • docker ps:列出所有正在运行的容器。
    • docker ps -a:列出所有容器(包括已停止的)。
  • docker stop [容器名称或ID]:停止一个正在运行的容器。
  • docker start [容器名称或ID]:启动一个已停止的容器。
  • docker restart [容器名称或ID]:重启一个容器。
  • docker rm [容器名称或ID]:删除一个或多个已停止的容器。
    • 示例:docker rm my-web-app
    • docker rm $(docker ps -aq):删除所有已停止的容器。
  • docker rmi [镜像名称或ID]:删除一个或多个本地镜像。
    • 示例:docker rmi ubuntu:latest
    • docker rmi $(docker images -q):删除所有本地镜像。
  • docker exec -it [容器名称或ID] [命令]:在运行中的容器内执行命令。
    • -i:保持标准输入打开。
    • -t:分配一个伪 TTY。
    • 示例:docker exec -it my-web-app bash (进入 Nginx 容器的 bash 终端)
  • docker logs [容器名称或ID]:查看容器的日志输出。

5. 实践示例:用 Docker 运行一个简单的 Python Web 应用

让我们通过一个简单的 Python Flask Web 应用来演示 Docker 的使用。

步骤 1:创建应用程序文件 app.py

在一个空目录中创建 app.py 文件,内容如下:

“`python

app.py

from flask import Flask

app = Flask(name)

@app.route(‘/’)
def hello():
return “Hello, Docker! This is a simple Flask app.”

if name == ‘main‘:
app.run(debug=True, host=’0.0.0.0’, port=5000)
“`

步骤 2:创建依赖文件 requirements.txt

在同一目录下创建 requirements.txt 文件,内容如下:

Flask==2.0.3

步骤 3:创建 Dockerfile

在同一目录下创建 Dockerfile 文件(注意没有文件扩展名),内容如下:

“`dockerfile

使用官方 Python 运行时作为父镜像

FROM python:3.9-slim-buster

设置工作目录

WORKDIR /app

将当前目录下的所有内容复制到容器的 /app 目录

COPY . /app

安装在 requirements.txt 中指定的任何依赖项

RUN pip install –no-cache-dir -r requirements.txt

使容器的 5000 端口可用于外部访问

EXPOSE 5000

当容器启动时运行 app.py

CMD [“python”, “app.py”]
“`

步骤 4:构建 Docker 镜像

在包含 app.py, requirements.txtDockerfile 的目录下打开终端,运行以下命令来构建镜像:

bash
docker build -t my-flask-app .

* -t my-flask-app:为您的镜像命名为 my-flask-app
* .:表示 Dockerfile 和应用程序文件在当前目录。

步骤 5:运行 Docker 容器

镜像构建成功后,运行以下命令来启动容器:

bash
docker run -p 5000:5000 --name flask-container -d my-flask-app

* -p 5000:5000:将宿主机的 5000 端口映射到容器的 5000 端口。
* --name flask-container:为容器指定名称。
* -d:在后台运行容器。

步骤 6:验证应用程序

打开您的浏览器,访问 http://localhost:5000。您应该会看到 “Hello, Docker! This is a simple Flask app.” 的消息。

您也可以使用 docker ps 查看正在运行的容器:

bash
docker ps

当您不再需要容器时,可以停止并删除它:

bash
docker stop flask-container
docker rm flask-container

6. 总结与展望

通过本文,您应该对 Docker 的基本概念、安装方法和常用命令有了全面的了解,并通过一个实践示例体验了 Docker 的强大之处。Docker 不仅仅是运行单个应用程序的工具,它还是构建微服务架构、持续集成/持续部署 (CI/CD) 流程以及云原生应用的重要基石。

下一步学习建议:

  • Docker Compose:学习如何使用 Docker Compose 来定义和运行多容器 Docker 应用程序。
  • 数据卷 (Volumes):了解如何管理容器内的数据持久化。
  • 网络 (Networking):深入理解 Docker 容器之间的网络通信。
  • Docker Swarm / Kubernetes:探索容器编排工具,用于大规模部署和管理容器化应用程序。

Docker 的世界广阔而充满可能性。持续学习和实践将帮助您更好地利用这项技术,提升您的开发和部署效率。

滚动至顶部