如何管理 Docker 容器和镜像

DockerDockerBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

Docker 彻底改变了我们开发、部署和管理应用程序的方式。在本全面教程中,你将学习如何有效地管理 Docker 容器和镜像,从构建和部署到监控与故障排除。无论你是初学者还是有经验的 Docker 用户,本指南都将为你提供掌握 Docker 容器管理技术所需的关键技能。

Docker 容器简介

什么是 Docker?

Docker 是一个开源平台,它允许开发者在容器化环境中构建、部署和运行应用程序。容器是轻量级、可移植且自包含的单元,它们打包了应用程序的代码、依赖项和运行时环境,从而便于在不同的计算环境之间移动应用程序。

Docker 容器的优点

  1. 一致性:无论底层基础设施如何,Docker 容器都能确保应用程序以相同的方式运行。
  2. 可扩展性:容器可以轻松地进行扩展或缩减,以满足不断变化的需求。
  3. 高效性:与传统虚拟机相比,容器更轻量级,使用的资源更少。
  4. 可移植性:Docker 容器可以在任何支持 Docker 运行时的系统上运行,便于在不同环境之间移动应用程序。

Docker 架构

Docker 使用客户端 - 服务器架构,其中 Docker 客户端与 Docker 守护进程(服务器)通信以执行各种操作,例如构建、运行和管理容器。

graph LD subgraph Docker 架构 client[Docker 客户端] daemon[Docker 守护进程] registry[Docker 镜像仓库] client -- 通信 --> daemon daemon -- 拉取/推送 --> registry end

Docker 组件

  1. Docker 镜像:Docker 镜像是容器的构建块。它们包含应用程序代码、依赖项和运行时环境。
  2. Docker 容器:容器是 Docker 镜像的运行实例。它们是隔离的、轻量级的且可移植的。
  3. Docker 镜像仓库:Docker 镜像仓库是用于存储和分发 Docker 镜像的系统。最流行的镜像仓库是 Docker Hub,它是 Docker 提供的公共镜像仓库。

开始使用 Docker

要开始使用 Docker,你需要在系统上安装 Docker 运行时。你可以从 Docker 官方网站(https://www.docker.com/get-started)下载并安装 Docker。

安装好 Docker 后,你就可以开始探索并使用 Docker 容器了。让我们进入下一部分,学习如何管理 Docker 镜像。

管理 Docker 镜像

拉取 Docker 镜像

要从镜像仓库拉取 Docker 镜像,你可以使用 docker pull 命令:

docker pull ubuntu:22.04

这将从 Docker Hub 镜像仓库拉取 ubuntu:22.04 镜像。

构建 Docker 镜像

你可以使用 Dockerfile 构建自己的 Docker 镜像,Dockerfile 是一个文本文件,包含构建镜像的指令。以下是一个 Dockerfile 示例:

FROM ubuntu:22.04
RUN apt-get update && apt-get install -y nginx
COPY index.html /var/www/html/
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

要构建镜像,运行以下命令:

docker build -t my-nginx-app.

这将创建一个名为 my-nginx-app 的新 Docker 镜像。

列出 Docker 镜像

你可以使用 docker images 命令列出系统上的所有 Docker 镜像:

docker images

这将显示一个表格,其中包含每个镜像的信息,包括镜像名称、标签、镜像 ID、创建时间和大小。

标记 Docker 镜像

你可以为 Docker 镜像添加标签,以帮助组织和管理它们。要标记一个镜像,使用 docker tag 命令:

docker tag my-nginx-app:latest my-nginx-app:v1.0

这将为 my-nginx-app 镜像创建一个新标签 v1.0

推送 Docker 镜像

一旦你构建并标记了 Docker 镜像,就可以使用 docker push 命令将其推送到镜像仓库:

docker push my-nginx-app:v1.0

这将把 my-nginx-app:v1.0 镜像推送到默认镜像仓库(Docker Hub)。

删除 Docker 镜像

要删除一个 Docker 镜像,使用 docker rmi 命令:

docker rmi my-nginx-app:v1.0

这将从你的系统中删除 my-nginx-app:v1.0 镜像。

既然你已经了解了如何管理 Docker 镜像,让我们进入下一部分,学习如何运行和部署 Docker 容器。

运行和部署 Docker 容器

运行 Docker 容器

要运行一个 Docker 容器,使用 docker run 命令:

docker run -d -p 80:80 my-nginx-app

这将基于 my-nginx-app 镜像启动一个新容器,并将主机上的 80 端口映射到容器内的 80 端口。

你也可以使用 -it 标志运行交互式容器:

docker run -it ubuntu:22.04 /bin/bash

这将启动一个交互式的 Ubuntu 容器,并在容器内为你提供一个 shell 提示符。

管理正在运行的容器

你可以使用 docker ps 命令列出所有正在运行的容器:

docker ps

要停止一个正在运行的容器,使用 docker stop 命令:

docker stop my-nginx-app

要启动一个已停止的容器,使用 docker start 命令:

docker start my-nginx-app

访问容器日志

你可以使用 docker logs 命令查看正在运行的容器的日志:

docker logs my-nginx-app

这将显示 my-nginx-app 容器的日志。

在容器中执行命令

你可以使用 docker exec 命令在正在运行的容器内执行命令:

docker exec -it my-nginx-app /bin/bash

这将在 my-nginx-app 容器内启动一个交互式 shell 会话。

部署 Docker 容器

要在生产环境中部署 Docker 容器,你可以使用 Docker Compose 或 Kubernetes 等工具。这些工具可帮助你管理和编排多个容器及其依赖项。

以下是一个简单的 Docker Compose 文件示例:

version: "3"
services:
  web:
    image: my-nginx-app
    ports:
      - "80:80"
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: password

你可以使用 docker-compose up 命令部署此设置。

通过使用 Docker Compose 或 Kubernetes,你可以在容器化环境中轻松扩展、管理和部署你的应用程序。

总结

在本教程中,你已经学习了管理 Docker 容器和镜像的基础知识。现在你知道如何构建、部署和维护基于 Docker 的应用程序,确保它们平稳且高效地运行。通过利用 Docker 的强大功能,你可以简化开发和部署流程,从而提高生产力和可扩展性。继续探索和实践 Docker,以进一步提升你的技能,并释放这项变革性技术的全部潜力。