查看镜像的详细信息
查看 Docker 镜像的详细信息对于了解镜像的大小、创建时间等非常有用:
#!/bin/bash
# 查看镜像的详细信息
docker inspect $1
docker inspect
:查看镜像的详细信息。
限制容器的资源
为了避免单个容器占用过多系统资源,可以在启动容器时限制其资源使用:
#!/bin/bash
# 限制容器的资源
docker run -d --memory="512m" --cpus="1" --name my_container my_image
--memory="512m"
:限制容器的内存使用为 512MB。--cpus="1"
:限制容器使用一个 CPU 核心。
备份容器的数据
#!/bin/bash
# 备份容器的数据
CONTAINER_ID=$1
BACKUP_FILE="${CONTAINER_ID}_backup_$(date +%F).tar"
docker export $CONTAINER_ID > $BACKUP_FILE
echo "备份保存到 $BACKUP_FILE"
docker export
:导出容器的文件系统。- 将容器 ID 作为脚本参数传递。
- 备份文件命名格式为容器 ID + 当前日期。
删除停止的容器
#!/bin/bash
# 删除所有停止的容器
docker rm $(docker ps -aq -f "status=exited")
docker ps -aq -f "status=exited"
:列出所有停止的容器。docker rm
:删除这些容器。
自动重启容器
#!/bin/bash
# 使用重启策略重启容器
CONTAINER_NAME=$1
docker update --restart always $CONTAINER_NAME
echo "$CONTAINER_NAME 现在将在失败后自动重启。"
docker update --restart always
:设置容器在失败后自动重启。
运行容器并在退出后清理
#!/bin/bash
# 运行容器并清理
IMAGE_NAME=$1
docker run --rm $IMAGE_NAME
--rm
:容器停止后自动删除。
列出所有容器的镜像层
在调试或排查容器相关问题时,查看容器的镜像层有时非常有帮助。以下脚本列出每个容器的镜像层:
#!/bin/bash
# 列出所有容器的镜像层
docker inspect --format '{{.Id}}: {{.Image}}' $(docker ps -q)
docker inspect --format
:通过格式化输出,获取容器的镜像层。docker ps -q
:列出所有运行中的容器。
自动清理未使用的资源
#!/bin/bash
# 清理未使用的资源
docker system prune -f --volumes
docker system prune
:删除未使用的容器、网络、镜像。--volumes
:删除未使用的卷。
删除dangling的镜像
#!/bin/bash
# 删除dangling 镜像
docker rmi $(docker images -q -f "dangling=true")
docker images -q -f "dangling=true"
:列出所有未被引用的镜像 ID。docker rmi
:删除这些镜像。
查看容器的详细信息
如果需要查看容器的详细信息(例如环境变量、配置等),可以使用以下脚本:
#!/bin/bash
# 查看容器的详细信息
CONTAINER_ID=$1
docker inspect $CONTAINER_ID
docker inspect
:提供容器的详细信息,包括网络配置、挂载卷等。
监控容器的资源使用情况
#!/bin/bash
# 监控所有运行中容器的资源使用情况
docker stats --all
docker stats
:显示容器的实时 CPU、内存、网络等统计信息。--all
:包括所有容器,已停止的容器也会显示。
重启所有容器
#!/bin/bash
# 重启所有容器
docker restart $(docker ps -q)
docker restart
:重启所有正在运行的容器。
自动启动所有容器
#!/bin/bash
# 启动所有停止的容器
docker start $(docker ps -aq)
docker ps -aq
:列出所有容器 ID(包括停止的容器)。docker start
:启动容器。
从容器复制文件
#!/bin/bash
# 从容器复制文件
CONTAINER_ID=$1
SOURCE_PATH=$2
DEST_PATH=$3
docker cp $CONTAINER_ID:$SOURCE_PATH $DEST_PATH
echo "从 $CONTAINER_ID 复制 $SOURCE_PATH 到 $DEST_PATH"
docker cp
:在容器和主机之间复制文件或目录。
列出所有暴露的端口
#!/bin/bash
# 列出所有暴露的端口
docker ps --format '{{.ID}}: {{.Ports}}'
docker ps --format
:自定义输出格式,显示容器 ID 和暴露的端口。
从备份恢复容器
#!/bin/bash
# 从 tar 备份恢复容器
BACKUP_FILE=$1
docker import $BACKUP_FILE restored_container:latest
echo "容器恢复为 'restored_container:latest'"
docker import
:从 tar 文件创建新的 Docker 镜像。- 使用恢复后的镜像启动一个新的容器。
检查所有容器的日志
#!/bin/bash
# 显示所有容器的日志
docker ps -q | xargs -I {} docker logs {}
docker ps -q
:列出所有运行中的容器 ID。xargs
:将容器 ID 传递给docker logs
,以查看日志。
删除挂起的容器
有时容器会被暂停或进入挂起状态,您可以使用以下脚本来自动清理这些状态异常的容器:
#!/bin/bash
# 删除挂起的容器
docker rm $(docker ps -aq -f "status=paused")
docker ps -aq -f "status=paused"
:列出所有被暂停的容器。docker rm
:删除这些暂停的容器。
更新运行中的容器
#!/bin/bash
# 更新运行中的容器
CONTAINER_NAME=$1
IMAGE_NAME=$(docker inspect --format='{{.Config.Image}}' $CONTAINER_NAME)
docker pull $IMAGE_NAME
docker stop $CONTAINER_NAME
docker rm $CONTAINER_NAME
docker run -d --name $CONTAINER_NAME $IMAGE_NAME
docker inspect --format='{{.Config.Image}}'
:获取容器的镜像名称。- 拉取镜像的最新版本并重建容器。
停止所有运行中的容器
#!/bin/bash
# 停止所有运行中的容器
docker stop $(docker ps -q)
docker ps -q
:列出所有正在运行的容器的 ID。docker stop
:停止容器。
总结
以上脚本涵盖了 Docker 容器管理的各个方面。通过这些自动化脚本,您可以轻松管理和监控容器,节省运维工作量,并确保容器在高效、健康的状态下运行。