1、自动启动所有容器

有时在系统重启或维护后,可能希望一次性启动所有停止的容器。
  1. #!/bin/bash
  2. # 启动所有停止的容器
  3. docker start $(docker ps -aq)

<font style="color:rgb(1, 1, 1);">docker ps -aq</font> 列出所有容器 ID(停止和运行)。

<font style="color:rgb(1, 1, 1);">docker start</font> 通过传递 ID 作为参数来启动容器。

2、停止所有运行中的容器

快速停止所有当前运行的容器。
  1. #!/bin/bash
  2. # 停止所有运行中的容器
  3. docker stop $(docker ps -q)

<font style="color:rgb(1, 1, 1);">docker ps -q</font> 列出仅运行中的容器 ID。

<font style="color:rgb(1, 1, 1);">docker stop</font> 停止这些容器。

3、删除停止的容器

通过清理停止的容器来释放空间。
  1. #!/bin/bash
  2. # 删除所有停止的容器
  3. docker rm $(docker ps -aq -f "status=exited")

<font style="color:rgb(1, 1, 1);">docker ps -aq -f "status=exited"</font> 过滤停止的容器。

<font style="color:rgb(1, 1, 1);">docker rm</font> 删除它们。

4、删除dangling的镜像

清除未使用的 Docker 镜像以节省磁盘空间。
  1. #!/bin/bash
  2. # 删除dangling 镜像
  3. docker rmi $(docker images -q -f "dangling=true")

<font style="color:rgb(1, 1, 1);">docker images -q -f "dangling=true"</font> 列出无标签的镜像 ID(悬空)。

<font style="color:rgb(1, 1, 1);">docker rmi</font> 删除这些镜像。

5、备份容器的数据

将运行中的容器的文件系统导出到 tar 文件。
  1. #!/bin/bash
  2. # 备份容器的数据
  3. CONTAINER_ID=$1
  4. BACKUP_FILE="${CONTAINER_ID}_backup_$(date +%F).tar"
  5. docker export $CONTAINER_ID > $BACKUP_FILE
  6. echo "备份保存到 $BACKUP_FILE"

<font style="color:rgb(1, 1, 1);">docker export</font> 导出容器的文件系统。

将容器 ID 作为参数传递给脚本。

6、从备份恢复容器

从 tar 备份文件中重新创建容器。
  1. #!/bin/bash
  2. # 从 tar 备份恢复容器
  3. BACKUP_FILE=$1
  4. docker import $BACKUP_FILE restored_container:latest
  5. echo "容器恢复为 'restored_container:latest'"

<font style="color:rgb(1, 1, 1);">docker import</font> 从 tar 文件创建新镜像。

该镜像可用于启动新容器。

7、监控容器的资源使用情况

显示所有运行中容器的实时统计信息。
  1. #!/bin/bash
  2. # 监控所有运行中容器的资源使用情况
  3. docker stats --all

<font style="color:rgb(1, 1, 1);">docker stats</font> 显示实时的 CPU、内存和网络统计信息。

<font style="color:rgb(1, 1, 1);">--all</font> 包括停止的容器。

8、自动重启容器

确保关键容器在失败后自动重启。
  1. #!/bin/bash
  2. # 使用重启策略重启容器
  3. CONTAINER_NAME=$1
  4. docker update --restart always $CONTAINER_NAME
  5. echo "$CONTAINER_NAME 现在将在失败后自动重启。"

<font style="color:rgb(1, 1, 1);">docker update --restart always</font> 配置重启策略。

将容器名称作为参数传递。

9、运行容器并在退出后清理

在容器停止后自动删除。
  1. #!/bin/bash
  2. # 运行容器并清理
  3. IMAGE_NAME=$1
  4. docker run --rm $IMAGE_NAME

<font style="color:rgb(1, 1, 1);">--rm</font> 在容器停止时删除容器。

适用于一次性任务。

10、检查所有容器的日志

将多个容器的日志合并到一个输出中。
  1. #!/bin/bash
  2. # 显示所有容器的日志
  3. docker ps -q | xargs -I {} docker logs {}

<font style="color:rgb(1, 1, 1);">docker ps -q</font> 列出运行中的容器 ID。

xargs 将这些 ID 传递给 <font style="color:rgb(1, 1, 1);">docker logs</font>

11、自动清理未使用的资源

安排自动清理未使用的 Docker 资源。
  1. #!/bin/bash
  2. # 清理未使用的资源
  3. docker system prune -f --volumes

<font style="color:rgb(1, 1, 1);">docker system prune</font> 删除未使用的容器、网络和镜像。

—volumes 还删除未使用的卷。

12、更新运行中的容器

使用最新版本的镜像重新创建容器。
  1. #!/bin/bash
  2. # 更新运行中的容器
  3. CONTAINER_NAME=$1
  4. IMAGE_NAME=$(docker inspect --format='{{.Config.Image}}' $CONTAINER_NAME)
  5. docker pull $IMAGE_NAME
  6. docker stop $CONTAINER_NAME
  7. docker rm $CONTAINER_NAME
  8. docker run -d --name $CONTAINER_NAME $IMAGE_NAME

<font style="color:rgb(1, 1, 1);">docker inspect</font> 获取容器的镜像名称。

脚本拉取最新镜像并重新创建容器。

13、从容器复制文件

将文件或目录从容器提取到主机。
  1. #!/bin/bash
  2. # 从容器复制文件
  3. CONTAINER_ID=$1
  4. SOURCE_PATH=$2
  5. DEST_PATH=$3
  6. docker cp $CONTAINER_ID:$SOURCE_PATH $DEST_PATH
  7. echo "从 $CONTAINER_ID 复制 $SOURCE_PATH 到 $DEST_PATH"

<font style="color:rgb(1, 1, 1);">docker cp</font> 在容器和主机之间复制文件。

将容器 ID、源路径和目标路径作为参数传递。

14、重启所有容器

快速重启所有运行中的容器。
  1. #!/bin/bash
  2. # 重启所有容器
  3. docker restart $(docker ps -q)

<font style="color:rgb(1, 1, 1);">docker restart</font> 通过 ID 重启容器。

15、列出所有暴露的端口

检查运行中容器的暴露端口。
  1. #!/bin/bash
  2. # 列出所有暴露的端口
  3. docker ps --format '{{.ID}}: {{.Ports}}'

<font style="color:rgb(1, 1, 1);">docker ps --format</font> 自定义输出以显示容器 ID 和端口。