Docker容器常用命令详解

发布于:2025-02-11 ⋅ 阅读:(28) ⋅ 点赞:(0)

20个Docker容器常用脚本命令

1. 查看镜像的详细信息

查看 Docker 镜像的详细信息对于了解镜像的大小、创建时间等非常有用:

#!/bin/bash
# 查看镜像的详细信息
docker inspect $1

解释:

  • • docker inspect:查看镜像的详细信息。


2. 限制容器的资源

为了避免单个容器占用过多系统资源,可以在启动容器时限制其资源使用:

#!/bin/bash
# 限制容器的资源
docker run -d --memory="512m" --cpus="1" --name my_container my_image

解释:

  • • --memory="512m":限制容器的内存使用为 512MB。

  • • --cpus="1":限制容器使用一个 CPU 核心。


3. 备份容器的数据

#!/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 + 当前日期。


4. 删除停止的容器

#!/bin/bash
# 删除所有停止的容器
docker rm $(docker ps -aq -f "status=exited")

解释:

  • • docker ps -aq -f "status=exited":列出所有停止的容器。

  • • docker rm:删除这些容器。


5. 自动重启容器

#!/bin/bash
# 使用重启策略重启容器
CONTAINER_NAME=$1
docker update --restart always $CONTAINER_NAME
echo "$CONTAINER_NAME 现在将在失败后自动重启。"

解释:

  • • docker update --restart always:设置容器在失败后自动重启。


6. 运行容器并在退出后清理

#!/bin/bash
# 运行容器并清理
IMAGE_NAME=$1
docker run --rm $IMAGE_NAME

解释:

  • • --rm:容器停止后自动删除。


7. 列出所有容器的镜像层

在调试或排查容器相关问题时,查看容器的镜像层有时非常有帮助。以下脚本列出每个容器的镜像层:

#!/bin/bash
# 列出所有容器的镜像层
docker inspect --format '{{.Id}}: {{.Image}}' $(docker ps -q)

解释:

  • • docker inspect --format:通过格式化输出,获取容器的镜像层。

  • • docker ps -q:列出所有运行中的容器。


8. 自动清理未使用的资源

#!/bin/bash
# 清理未使用的资源
docker system prune -f --volumes

解释:

  • • docker system prune:删除未使用的容器、网络、镜像。

  • • --volumes:删除未使用的卷。


9. 删除dangling的镜像

#!/bin/bash
# 删除dangling 镜像
docker rmi $(docker images -q -f "dangling=true")

解释:

  • • docker images -q -f "dangling=true":列出所有未被引用的镜像 ID。

  • • docker rmi:删除这些镜像。


10. 查看容器的详细信息

如果需要查看容器的详细信息(例如环境变量、配置等),可以使用以下脚本:

#!/bin/bash
# 查看容器的详细信息
CONTAINER_ID=$1
docker inspect $CONTAINER_ID

解释:

  • • docker inspect:提供容器的详细信息,包括网络配置、挂载卷等。


11. 监控容器的资源使用情况

#!/bin/bash
# 监控所有运行中容器的资源使用情况
docker stats --all

解释:

  • • docker stats:显示容器的实时 CPU、内存、网络等统计信息。

  • • --all:包括所有容器,已停止的容器也会显示。


12. 重启所有容器

#!/bin/bash
# 重启所有容器
docker restart $(docker ps -q)

解释:

  • • docker restart:重启所有正在运行的容器。


13. 自动启动所有容器

#!/bin/bash
# 启动所有停止的容器
docker start $(docker ps -aq)

解释:

  • • docker ps -aq:列出所有容器 ID(包括停止的容器)。

  • • docker start:启动容器。


14. 从容器复制文件

#!/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:在容器和主机之间复制文件或目录。


15. 列出所有暴露的端口

#!/bin/bash
# 列出所有暴露的端口
docker ps --format '{{.ID}}: {{.Ports}}'

解释:

  • • docker ps --format:自定义输出格式,显示容器 ID 和暴露的端口。


16. 从备份恢复容器

#!/bin/bash
# 从 tar 备份恢复容器
BACKUP_FILE=$1
docker import $BACKUP_FILE restored_container:latest
echo "容器恢复为 'restored_container:latest'"

解释:

  • • docker import:从 tar 文件创建新的 Docker 镜像。

  • • 使用恢复后的镜像启动一个新的容器。


17. 检查所有容器的日志

#!/bin/bash
# 显示所有容器的日志
docker ps -q | xargs -I {} docker logs {}

解释:

  • • docker ps -q:列出所有运行中的容器 ID。

  • • xargs:将容器 ID 传递给 docker logs,以查看日志。


18. 删除挂起的容器

有时容器会被暂停或进入挂起状态,您可以使用以下脚本来自动清理这些状态异常的容器:

#!/bin/bash
# 删除挂起的容器
docker rm $(docker ps -aq -f "status=paused")

解释:

  • • docker ps -aq -f "status=paused":列出所有被暂停的容器。

  • • docker rm:删除这些暂停的容器。


19. 更新运行中的容器

#!/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}}':获取容器的镜像名称。

  • • 拉取镜像的最新版本并重建容器。


20. 停止所有运行中的容器

#!/bin/bash
# 停止所有运行中的容器
docker stop $(docker ps -q)

解释:

  • • docker ps -q:列出所有正在运行的容器的 ID。

  • • docker stop:停止容器。

基本命令
命令 描述 示例
docker run 创建并启动一个容器 docker run -it ubuntu bash
docker ps 列出当前运行的容器 docker ps
docker ps -a 列出所有容器,包括未运行的 docker ps -a
docker stop 停止一个运行中的容器 docker stop [CONTAINER_ID]
docker start 启动一个已停止的容器 docker start [CONTAINER_ID]
docker restart 重启容器 docker restart [CONTAINER_ID]
docker rm 删除一个或多个容器 docker rm [CONTAINER_ID]
docker pull 从仓库拉取一个镜像 docker pull ubuntu
docker images 列出本地存储的镜像 docker images
docker rmi 删除一个或多个镜像 docker rmi [IMAGE_ID]
docker build 从Dockerfile构建镜像 docker build -t my-image:tag .
docker exec 在运行的容器中执行命令 docker exec -it [CONTAINER_ID] bash
docker logs 获取容器的日志 docker logs [CONTAINER_ID]
docker commit 从修改过的容器创建新的镜像 docker commit [CONTAINER_ID] new-image
docker inspect 获取容器或镜像的详细信息 docker inspect [CONTAINER_ID/IMAGE_ID]
docker network 管理Docker网络 docker network ls
docker system df 查看镜像/容器/数据卷所占的空间 docker system df
docker top 查看容器内部进程的状 docker top CONTAINER_ID
docker rename 更改容器的名字 docker rename OLD_NAME NEW_NAME
docker diff 检查容器文件系统的变化 docker diff CONTAINER_ID
镜像管理指令
命令 描述 示例
docker images 列出本地的所有镜像 docker images
docker pull 从镜像仓库拉取指定的镜像 docker pull ubuntu:18.04
docker push 将本地镜像推送到镜像仓库 docker push myrepo/myimage:tag
docker rmi 删除一个或多个本地存储的镜像 docker rmi ubuntu
docker build 使用Dockerfile构建新的镜像 docker build -t myimage .
docker history 显示镜像的历史信息 docker history myimage
docker inspect 显示镜像的详细信息 docker inspect ubuntu
docker tag 为镜像添加一个新的标签 docker tag ubuntu:18.04 myubuntu:latest
docker save 将镜像保存为tar归档文件 docker save myimage > myimage.tar
docker load 从tar归档文件加载镜像 docker load < myimage.tar
docker import 从归档文件创建镜像 docker import mycontainer.tar myimage
docker export 将容器快照导出为归档文件 docker export mycontainer > mycontainer.tar
docker create 创建一个新容器但不启动它 docker create ubuntu:18.04
docker commit 从容器创建镜像 docker commit mycontainer mynewimage
docker image 专门清理悬空的镜像 docker image prune
容器管理指令
命令 描述 示例
docker run 创建一个新容器并运行一个命令 docker run -it ubuntu /bin/bash
docker ps 列出当前运行中的容器 docker ps
docker ps -a 列出所有容器,包括未运行的 docker ps -a
docker stop 停止一个或多个运行中的容器 docker stop [CONTAINER_ID]
docker start 启动一个或多个已停止的容器 docker start [CONTAINER_ID]
docker restart 重启一个或多个容器 docker restart [CONTAINER_ID]
docker kill 立即终止容器的运行 docker kill [CONTAINER_ID]
docker rm 删除一个或多个容器 docker rm [CONTAINER_ID]
docker exec 在运行的容器中执行命令 docker exec -it [CONTAINER_ID] /bin/bash
docker attach 连接到正在运行的容器 docker attach [CONTAINER_ID]
docker cp 从容器中复制文件/目录到主机,反之亦然 docker cp [CONTAINER_ID]:/path/to/file /dest
docker logs 获取容器的日志 docker logs [CONTAINER_ID]
数据管理与卷指令
命令 描述 示例
docker volume create 创建一个新的卷 docker volume create my_volume
docker volume ls 列出所有卷 docker volume ls
docker volume inspect 显示指定卷的详细信息 docker volume inspect my_volume
docker volume rm 删除一个或多个卷 docker volume rm my_volume
docker volume prune 删除所有未使用的卷 docker volume prune
docker cp 从主机复制文件到容器,或者从容器复制到主机 docker cp foo.txt mycontainer:/foo.txt
docker create 创建一个新容器,用于数据卷 docker create -v /dbdata --name dbstore training/postgres
docker run -v 在运行容器时挂载卷 docker run -d -P --name web -v /webapp training/webapp app.py
docker run --mount 使用更详细的挂载配置运行容器 docker run --mount source=my_volume,target=/data my_image
docker service create 在服务中使用卷 docker service create --replicas=1 --name my_service --mount type=volume,src=my_volume,dst=/data my_image
网络配置指令
命令 描述 示例
docker network create 创建一个新的网络 docker network create --driver bridge my_network
docker network ls 列出所有网络 docker network ls
docker network rm 删除一个或多个网络 docker network rm my_network
docker network inspect 显示一个或多个网络的详细信息 docker network inspect my_network
docker network connect 连接一个容器到网络 docker network connect my_network my_container
docker network disconnect 断开容器与网络的连接 docker network disconnect my_network my_container
docker run --network 在特定网络下运行一个新的容器 docker run --network=my_network my_image
docker network prune 删除所有未使用的网络 docker network prune
docker service create 在特定网络下创建一个服务 docker service create --network my_network my_service
docker port 查看容器端口映射关系 docker port CONTAINER_ID

总结

以上脚本涵盖了 Docker 容器管理的各个方面。通过这些自动化脚本,您可以轻松管理和监控容器,节省运维工作量,并确保容器在高效、健康的状态下运行。