【Docker系列三】Docker 容器

举报
kwan的解忧杂货铺啊 发表于 2025/03/23 22:59:31 2025/03/23
【摘要】 容器的概念Docker 容器是 Docker 技术的核心组成部分,它是一个轻量级、独立、可执行的软件包,包含了运行应用程序所需的所有内容:代码、运行时环境、库、环境变量和配置文件。容器是基于 Docker 镜像创建的,镜像是一个只读模板,而容器则是镜像的运行实例。每个容器都是一个独立的运行环境,与其他容器和宿主机隔离。容器与传统的虚拟机(VM)有所不同。虚拟机通过虚拟化硬件来运行完整的操作...

容器的概念

Docker 容器是 Docker 技术的核心组成部分,它是一个轻量级、独立、可执行的软件包,包含了运行应用程序所需的所有内容:代码、运行时环境、库、环境变量和配置文件。容器是基于 Docker 镜像创建的,镜像是一个只读模板,而容器则是镜像的运行实例。每个容器都是一个独立的运行环境,与其他容器和宿主机隔离。

容器与传统的虚拟机(VM)有所不同。虚拟机通过虚拟化硬件来运行完整的操作系统,而容器则共享宿主机的操作系统内核,只包含应用程序及其依赖项。这使得容器更加轻量级、启动更快,并且资源利用率更高。
在这里插入图片描述

容器的主要特点包括:

  • 轻量级:容器共享宿主机的内核,因此它们比虚拟机更加轻量级,启动时间通常在几秒钟内。
  • 可移植性:容器可以在任何支持 Docker 的环境中运行,确保了应用程序在不同环境中的一致性。
  • 隔离性:每个容器都运行在独立的环境中,互不干扰,提高了应用程序的安全性。
  • 高效性:容器的资源占用少,可以在同一台物理机上运行更多的容器。

容器的创建与启动

1. 容器的创建

容器的创建是基于 Docker 镜像的。要创建一个容器,可以使用docker create命令。这个命令会创建一个容器,但不会启动它。

例如,基于官方的 Ubuntu 镜像创建一个容器:

docker create --name my-ubuntu-container ubuntu

在这个例子中,--name选项用于指定容器的名称,ubuntu是基础镜像的名称。

2. 容器的启动

创建容器后,可以使用docker start命令来启动它。例如,启动刚刚创建的my-ubuntu-container容器:

docker start my-ubuntu-container

启动容器后,可以使用docker ps命令查看正在运行的容器:

docker ps

如果需要创建并立即启动容器,可以使用docker run命令。这个命令结合了docker createdocker start的功能。例如,创建并启动一个 Ubuntu 容器:

docker run --name my-ubuntu-container -it ubuntu /bin/bash

在这个例子中,-it选项用于分配一个伪终端并保持标准输入打开,/bin/bash是容器启动后执行的命令。

3. 容器的交互模式

在启动容器时,可以使用-it选项进入容器的交互模式。例如,启动一个 Ubuntu 容器并进入其命令行:

docker run -it ubuntu /bin/bash

在交互模式下,用户可以直接与容器进行交互,执行命令和操作。退出交互模式后,容器会自动停止。

4. 后台运行容器

如果希望容器在后台运行,可以使用-d选项。例如,启动一个 Nginx 容器并在后台运行:

docker run -d --name my-nginx nginx

在后台运行的容器不会占用终端,用户可以通过docker logs命令查看容器的输出。

容器的停止与删除

1. 容器的停止

要停止一个正在运行的容器,可以使用docker stop命令。例如,停止名为my-nginx的容器:

docker stop my-nginx

docker stop命令会发送一个 SIGTERM 信号给容器的主进程,允许容器优雅地停止。如果容器在指定时间内没有停止,Docker 会发送一个 SIGKILL 信号强制停止容器。

2. 容器的删除

停止容器后,可以使用docker rm命令将其删除。例如,删除名为my-nginx的容器:

docker rm my-nginx

如果需要删除正在运行的容器,可以使用-f选项强制删除:

docker rm -f my-nginx

3. 批量删除容器

有时可能需要批量删除多个容器。可以使用以下命令删除所有已停止的容器:

docker container prune

如果需要删除所有容器(包括正在运行的容器),可以使用以下命令:

docker rm -f $(docker ps -aq)

容器的日志与监控

1. 容器的日志

Docker 容器会将标准输出和标准错误输出到日志中。要查看容器的日志,可以使用docker logs命令。例如,查看名为my-nginx的容器的日志:

docker logs my-nginx

docker logs命令还支持一些选项,如-f(跟随日志输出)、--tail(显示最后几行日志)和--since(显示指定时间之后的日志)。例如,实时查看容器的日志:

docker logs -f my-nginx

2. 容器的监控

Docker 提供了一些命令和工具来监控容器的运行状态和资源使用情况。

  • 查看容器状态:使用docker ps命令可以查看正在运行的容器。添加-a选项可以查看所有容器(包括已停止的容器)。

    docker ps -a
    
  • 查看容器资源使用情况:使用docker stats命令可以实时查看容器的资源使用情况,如 CPU、内存、网络和磁盘 I/O。

    docker stats
    
  • 查看容器详细信息:使用docker inspect命令可以查看容器的详细信息,包括配置、网络设置、挂载卷等。

    docker inspect my-nginx
    

3. 使用第三方监控工具

除了 Docker 自带的命令外,还可以使用一些第三方工具来监控 Docker 容器,如 Prometheus、Grafana、cAdvisor 等。这些工具提供了更强大的监控和可视化功能,适用于大规模容器环境的监控和管理。

总结

Docker 容器是 Docker 技术的核心,它通过轻量级、独立、可执行的软件包,为应用程序提供了高效、一致的运行环境。通过创建和启动容器,开发者可以快速部署和运行应用程序。通过停止和删除容器,可以有效地管理容器的生命周期。通过查看容器的日志和监控容器的运行状态,可以确保应用程序的稳定性和性能。掌握 Docker 容器的相关知识和操作,对于现代软件开发和运维至关重要。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。