24
2025
04
20:08:00

Docker 容器命令大全:启动、停止、重启、镜像管理、备份、Docker compose,工作中常用的都帮你总结好了!

Docker 容器作为轻量级、可移植的虚拟化技术,它已成为现代应用开发、部署和运维的核心工具。

图片

以现代应用的“操作系统”著称,也是 DevOps 和云原生技术的基石。

Docker 特性与优点

“轻量、标准化、可移植”是 Docker 容器化技术的核心优势。

关键特性

轻量级:共享主机内核,无需完整操作系统,秒级启动速度,资源占用率低。相比 VM,容器启动时间缩短 90%+,资源利用率提升 3-5 倍。

标准化与一致性:通过 Dockerfile 定义镜像,确保开发、测试、生产环境完全一致。

可移植性:同一镜像可在 Linux、Windows、MacOS 上运行,无需修改代码。无缝集成 Kubernetes、AWS ECS 等云平台,实现混合云/多云部署。

快速扩展与弹性:结合 Kubernetes,轻松实现秒级扩容(如应对流量高峰)。

安全性:每个容器拥有独立的进程、网络和文件系统,避免冲突。

优点

提升开发效率:无需手动配置依赖,镜像即环境。

降低运维成本:通过 Docker Compose 或 Kubernetes,实现一键部署、升级和回滚。

加速交付周期:与 Jenkins、GitLab CI 等工具无缝对接,实现持续集成与交付。

强可靠性:镜像不可变,避免配置漂移导致的故障。单个容器崩溃不影响其他容器,系统稳定性提升。

支持微服务架构:每个微服务运行在独立容器中,互不干扰。不同服务可使用不同技术栈(如 Java、Python、Go)。

对比传统虚拟化的优势

特性传统虚拟机(VM)Docker 容器
启动时间
分钟级
秒级
资源占用
高(需完整 OS)
低(共享主机内核)
隔离性
强(硬件级隔离)
中(进程级隔离)
扩展性
复杂(需手动配置)
简单(自动编排)
适用场景
多租户、安全隔离
微服务、DevOps、CI/CD

Docker容器化适用场景

  • 微服务架构:将单体应用拆分为多个独立容器,提升可维护性。
  • DevOps 流水线:实现开发、测试、生产环境的一致性。
  • CI/CD 集成:与 Jenkins、GitLab CI 等工具结合,加速交付。
  • 混合云/多云部署:支持跨云平台迁移,避免厂商锁定。
  • 大数据与 AI:运行 Spark、TensorFlow 等框架,提升资源利用率。

因此,无论是运维、开发还是测试都需要掌握一定的Docker命令的基本使用,这样我们可以进行快速部署、管理容器化应用等操作,提高工作效率。

下面详细给大家介绍 Docker 容器的启动、停止、重启方法,包括使用 dockerstop、dockerkill 和 dockerrestart 命令,以及日常工作中常用的 Docker 命令,如 dockerps、dockerlogs、dockerexec等。以及容器数据备份、DockerCompose等内容。

容器启动、停止、重启方法

启动容器

启动已停止的容器

#命令基本语法格式
docker start <container_id_or_name>

示例:

docker start my_docker

创建并启动容器

#命令基本语法格式
docker run [options] <image_name> [command]

常用选项:

-d:后台运行容器。
--name:指定容器名称。
-p:端口映射(如 -p 8080:80)。
-v:挂载数据卷。

示例:

docker run -d --name my_container -p 8080:80 nginx

停止容器

优雅停止容器(发送 SIGTERM 信号,允许进程清理资源):

#命令基本语法格式
docker stop <container_id_or_name>

示例:

docker stop my_container

强制停止容器(发送 SIGKILL 信号,立即终止进程):

#命令基本语法格式
docker kill <container_id_or_name>

示例:

docker kill my_container

重启容器

重启已运行的容器

#命令基本语法格式
docker restart <container_id_or_name>

示例:

docker restart my_container

常用 Docker 命令

查看 Docker 容器信息

#查看docker容器版本
docker version
#查看docker容器信息
docker info
#查看docker容器帮助
docker --help

查看运行中的容器

#列出所有运行中的容器
docker ps

#列出所有容器(包括已停止的
docker ps -a

查看容器日志

实时查看容器日志

#命令基本语法格式
docker logs -f <container_id_or_name>

示例:

docker logs -f my_container

查看最近 N 行日志

#命令基本语法格式
docker logs --tail N <container_id_or_name>

示例:

docker logs --tail 100 my_container

进入容器执行命令

进入正在运行的容器

#命令基本语法格式
docker exec -it <container_id_or_name> /bin/bash

或:

#命令基本语法格式
docker exec -it <container_id_or_name> /bin/sh

示例:

docker exec -it my_container /bin/bash

Docker 镜像管理

镜像查看

#列出本地images
docker images

#含中间映像层
docker images -a

#只显示镜像ID
docker images -q

#含中间映像层
docker images -qa  

#显示镜像摘要信息(DIGEST列)
docker images --digests

#显示镜像完整信息
docker images --no-trunc

镜像下载

#基本语法格式
docker pull [选项] [镜像名[:标签]]

示例:

#下载最新版本的 Nginx 镜像:
docker pull nginx
#等价于:
docker pull nginx:latest

#下载特定版本的 Ubuntu 镜像:
docker pull ubuntu:20.04

镜像搜索

#搜索仓库nginx镜像
docker search nginx

# --filter=stars=600:只显示 starts>=600 的镜像
docker search --filter=stars=600 nginx

# --no-trunc 显示镜像完整 DESCRIPTION 描述
docker search --no-trunc nginx

# --automated :只列出 AUTOMATED=OK 的镜像
docker search  --automated nginx

镜像删除

#基本语法格式
docker rmi [选项] 镜像名或镜像ID

示例

#删除指定名称的镜像
docker rmi nginx
如果镜像有多个标签,docker rmi 默认会尝试删除所有标签。

#通过镜像ID删除镜像
docker rmi <镜像ID>
docker rmi abc123def456

#强制删除镜像
#如果镜像被容器使用,默认情况下无法删除。可以添加 -f 参数强制删除:
docker rmi -f nginx

#删除所有未使用的镜像
docker image prune

#删除所有未使用的镜像、网络、容器等(危险操作,需谨慎)
docker system prune -a

容器数据备份

导出容器为镜像

将容器保存为镜像

docker commit <container_id_or_name> <new_image_name>

示例:

docker commit my_container my_image

导出容器数据卷

备份容器数据卷到本地文件

docker run --rm -v <container_volume>:/backup -v $(pwd):/data busybox tar czvf /data/backup.tar.gz -C /backup .

示例:

  • 假设容器数据卷挂载在 /var/lib/mydata,本地目录为 /home/user/backup
docker run --rm -v /var/lib/mydata:/backup -v /home/user/backup:/data busybox tar czvf /data/backup.tar.gz -C /backup .

导入容器数据

从备份文件恢复数据

docker run --rm -v <local_directory>:/restore -v $(pwd):/data busybox tar xzvf /data/backup.tar.gz -C /restore

Dockerfile

Dockerfile 是一个文本文件,其中包含了一系列构建 Docker 镜像的指令。通过 Dockerfile,可以自动化地构建镜像,确保镜像的一致性和可重复性。

Dockerfile 通常由以下部分组成:

  • 基础镜像:指定镜像的基础环境。
  • 维护者信息(可选):镜像的作者信息。
  • 环境变量(可选):设置环境变量。
  • 工作目录:指定容器内的工作目录。
  • 复制文件:将主机文件复制到容器中。
  • 安装依赖:安装应用程序所需的依赖。
  • 暴露端口:容器监听的端口。
  • 启动命令:指定容器启动时运行的命令。

常用指令

FROM #指定基础镜像。
LABEL #为镜像添加元数据(如作者、版本等)。
RUN #执行命令,通常用于安装依赖或配置环境。
COPY #将主机文件复制到容器中。
ADD #类似于 COPY,但支持自动解压归档文件(如 .tar.gz)。
WORKDIR #设置工作目录,后续的指令(如 RUN、CMD)将在此目录下执行。
ENV #设置环境变量。
EXPOSE #容器监听的端口。
VOLUME #声明匿名卷,用于数据持久化。
CMD #指定容器启动时运行的默认命令。
ENTRYPOINT #指定容器启动时运行的命令。
USER #指定运行命令的用户。
ARG #定义构建时变量,用于在构建过程中传递参数。
ONBUILD #定义一个触发器,当其他镜像以此镜像为基础镜像时执行。

简单示例

# 使用官方 Python 3.9 镜像作为基础镜像
FROM python:3.9-slim

# 设置工作目录
WORKDIR /app

# 复制当前目录下的所有文件到容器中的 /app 目录
COPY . /app

# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt

# 暴露端口(仅用于文档说明)
EXPOSE 5000

# 启动命令
CMD ["python""app.py"]

#构建镜像
docker build -t my-python-app .

#运行容器
docker run --rm my-python-app

Dockerfile 是构建 Docker 镜像的核心工具,通过合理编写 Dockerfile,可以实现镜像的自动化构建和高效管理。掌握 Dockerfile 的常用指令和最佳实践,可以帮助你构建出更安全、更稳定、更高效的 Docker 镜像。

Docker Compose

Docker Compose 是用于定义和运行多容器 Docker 应用的工具,通过 docker-compose.yml 文件配置服务、网络和卷。Docker Compose 极大地简化了多容器应用的部署和管理,特别是在开发、测试和预生产环境中。

Docker Compose 的核心功能

  • 定义多容器应用:通过一个 YAML 文件描述多个服务(容器)及其依赖关系。
  • 一键启动和停止:使用简单的命令即可启动、停止或重启整个应用。
  • 环境隔离:为每个服务指定不同的环境变量、配置和依赖。
  • 网络管理:自动创建和管理服务之间的网络连接。
  • 卷管理:方便地挂载卷,实现数据的持久化。

docker-compose.yml 文件结构

docker-compose.yml文件通常包含以下部分:

version  #指定 Compose 文件的版本。
services #定义应用中的服务(容器)。
networks #定义自定义网络。
volumes #定义自定义卷。
secrets和configs #管理敏感信息和配置文件。
基本配置示例 (docker-compose.yml)
version: '3.8'

services:
web:
    image:nginx:latest
    ports:
      -"8080:80"
    volumes:
      -./html:/usr/share/nginx/html
    networks:
      -mynetwork

app:
    build:./app
    environment:
      -FLASK_ENV=development
    depends_on:
      -db
    networks:
      -mynetwork

db:
    image:postgres:13
    environment:
      POSTGRES_USER:user
      POSTGRES_PASSWORD:password
      POSTGRES_DB:mydb
    volumes:
      -db_data:/var/lib/postgresql/data
    networks:
      -mynetwork

networks:
mynetwork:

volumes:
db_data:

基本操作命令

#启动服务
bashdocker-compose up -d

#停止服务
docker-compose down

#重启服务
docker-compose restart

#查看服务状态
docker-compose ps

#查看日志
docker-compose logs
#添加服务名称可以查看特定服务的日志,例如 docker-compose logs web。

#构建镜像
docker-compose build

#执行命令
docker-compose exec <service_name> <command>
##例如,进入 app 容器的交互式终端
docker-compose exec app bash

总结与建议

启动与停止:使用 docker startdocker stop 和 docker restart 管理容器生命周期。

日志与执行:通过 docker logs 和 docker exec 调试和操作容器。

数据备份:利用 tar 等工具结合容器卷实现数据备份与恢复。

Docker Compose:简化多容器应用管理,推荐使用 docker-compose 管理复杂服务。

通过掌握这些命令和工具,可以高效地管理 Docker 容器,提升开发运维效率。




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/10858.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: