Docker 常用命令详解
容器管理命令
容器是 Docker 的核心组件,我将在此详解常用的容器管理命令。
命令功能 | 命令代码 |
---|---|
创建并启动 Nginx 容器 | docker run -d --name my-nginx -p 80:80 nginx |
停止容器 | docker stop my-nginx |
启动容器 | docker start my-nginx |
重启容器 | docker restart my-nginx |
删除容器 | docker rm my-nginx |
列出正在运行的容器 | docker ps |
列出所有容器(包括已停止的) | docker ps -a |
docker run
命令用于创建并启动容器。-d
表示后台运行,--name
指定容器名称,-p
映射主机端口到容器端口。在运行容器时,可以使用 -v
参数挂载数据卷,例如 -v sumingcheng:/data
。
docker stop
、docker start
和 docker restart
命令分别用于停止、启动和重启容器。若需要强制停止容器,可以使用 docker kill
命令。
docker rm
命令用于删除容器。删除前需先停止容器,或使用 docker rm -f
强制删除正在运行的容器。
docker ps
命令用于查看正在运行的容器,添加 -a
参数可显示所有容器,包括已停止的。
使用 docker logs my-nginx
命令可以查看容器日志,添加 -f
参数可以实时跟踪日志输出。
通过 docker exec -it my-nginx /bin/bash
命令可以进入容器的交互式终端,进行内部操作。
使用 docker commit my-nginx my-nginx-image
命令可以将容器的当前状态保存为新的镜像,便于后续使用或分发。
最佳实践
运行容器时,使用 --rm
参数可以在容器退出后自动删除容器,节省系统资源。定期清理不再使用的容器,保持系统的整洁和高效。
镜像管理命令
镜像是创建容器的基础,我将介绍常用的镜像管理命令。
命令功能 | 命令代码 |
---|---|
拉取 Nginx 镜像 | docker pull nginx |
列出所有本地镜像 | docker images |
删除镜像 | docker rmi nginx |
构建镜像 | docker build -t my-nginx-image . |
docker pull
命令用于从 Docker Hub 或私有仓库拉取镜像。
docker images
命令列出本地所有镜像,包括仓库名、标签和大小等信息。
docker rmi
命令用于删除本地镜像。若镜像被容器使用,需先删除相关容器。
docker build
命令根据 Dockerfile
构建镜像,-t
参数为镜像指定名称和标签。
给镜像打标签可以使用 docker tag my-nginx-image my-nginx-image:v1.0
,便于版本管理。查看镜像历史可以使用 docker history my-nginx-image
,了解镜像的构建历史层次。
最佳实践
构建镜像时,建议使用轻量级的基础镜像,如 alpine
,以减小镜像大小。使用 .dockerignore
文件忽略不必要的文件,优化构建效率。
网络管理命令
Docker 网络用于容器间通信,我将介绍常用的网络管理命令。
命令功能 | 命令代码 |
---|---|
创建网络 | docker network create nginx-network |
列出所有网络 | docker network ls |
删除网络 | docker network rm nginx-network |
将容器连接到网络 | docker network connect nginx-network my-nginx |
从网络断开容器 | docker network disconnect nginx-network my-nginx |
docker network create
命令用于创建一个自定义网络,默认类型为 bridge
。可以使用 --driver
参数指定网络类型,例如 overlay
,适用于 Swarm 集群环境。
docker network connect
和 docker network disconnect
命令用于将容器连接到网络或从网络断开,方便灵活地管理容器通信。
可以使用 docker network inspect nginx-network
查看网络的详细信息,包括连接的容器、网络配置等。
在运行容器时,使用 docker run --network nginx-network nginx
指定容器加入特定网络。
创建覆盖网络(用于 Swarm 集群)可以使用 docker network create --driver overlay my-overlay-network
,支持跨主机的容器通信。
最佳实践
使用自定义网络时,容器可以通过容器名称互相通信,简化配置。避免使用默认 bridge
网络,通过创建专用网络提升安全性和管理便捷性。
数据卷管理命令
数据卷用于持久化容器数据,我将介绍常用的数据卷管理命令。
命令功能 | 命令代码 |
---|---|
创建数据卷 | docker volume create nginx-data |
列出所有数据卷 | docker volume ls |
删除数据卷 | docker volume rm nginx-data |
查看卷详细信息 | docker volume inspect nginx-data |
docker volume create
命令用于创建一个数据卷,便于管理持久化数据。
在运行容器时,使用 -v nginx-data:/data
将数据卷挂载到容器的 /data
目录,确保数据在容器重启或删除后依然存在。
数据卷不会随着容器的删除而删除,需要手动清理未使用的数据卷,保持系统整洁。
挂载主机目录到容器可以使用 docker run -v /host/data:/container/data nginx
,直接使用主机目录作为数据卷,便于与主机文件系统集成。
删除未使用的数据卷可以使用 docker volume prune
,清理所有未被使用的数据卷,释放磁盘空间。
最佳实践
使用命名数据卷管理持久化数据,更方便维护和识别。数据卷的性能通常优于绑定主机目录(bind mount),适合需要高效读写的场景。
容器监控和日志命令
为了维护容器的稳定运行,监控和日志非常重要,我将介绍相关命令。
命令功能 | 命令代码 |
---|---|
查看容器日志 | docker logs my-nginx |
实时跟踪容器日志 | docker logs -f my-nginx |
查看容器内部运行的进程 | docker top my-nginx |
显示容器资源使用统计 | docker stats my-nginx |
查看容器详细信息 | docker inspect my-nginx |
使用 docker logs my-nginx
命令可以获取容器的标准输出日志。添加 -f
参数实时跟踪日志输出,类似于 tail -f
,便于监控应用运行情况。
docker top my-nginx
命令查看容器内部运行的进程列表,帮助排查应用问题。
docker stats my-nginx
命令显示容器的实时资源使用情况,包括 CPU、内存、网络等,便于资源监控和优化。
docker inspect my-nginx
命令查看容器的详细配置信息,包括网络设置、挂载卷、环境变量等,有助于深入了解容器运行环境。
设置日志驱动:运行容器时可以使用 --log-driver
参数设置日志驱动,例如 json-file
、syslog
等,满足不同的日志管理需求。
限制容器资源:运行容器时使用 --memory
、--cpus
等参数限制容器的资源使用,防止容器占用过多主机资源,影响系统稳定性。
最佳实践
使用监控工具如 Prometheus 和 Grafana 对容器进行长期监控,及时发现和解决性能瓶颈。设置资源限制可以防止单个容器影响整个系统的性能和稳定性。
执行命令
在容器中执行命令或进入容器内部,我将介绍相关命令。
命令功能 | 命令代码 |
---|---|
在容器中执行命令 | docker exec -it my-nginx bash |
docker exec
命令用于在运行中的容器内执行命令。
-it
参数中,-i
保持标准输入打开,-t
分配一个伪终端,便于交互操作。
若容器内无 bash
,可使用 sh
或其他可用的 Shell,例如:
docker exec -it my-nginx sh
以交互模式启动容器可以使用:
docker run -it nginx /bin/bash
直接进入容器的交互式终端,进行实时操作。
在容器中运行单个命令可以使用:
docker exec my-nginx ls /usr/share/nginx/html
列出容器内指定目录的内容,便于快速查看文件结构。
最佳实践
尽量使用 Dockerfile
自动化构建镜像,减少手动进入容器执行命令的需求,提升环境一致性和可维护性。
常用补充命令
为更全面地使用 Docker,我整理了一些常用的补充命令。
命令功能 | 命令代码 |
---|---|
查看 Docker 版本信息 | docker version |
查看 Docker 系统信息 | docker info |
登录 Docker 注册服务器 | docker login |
推送镜像到仓库 | docker push my-nginx-image |
从容器创建新镜像 | docker commit my-nginx my-nginx-image:v2 |
清理未使用的资源 | docker system prune |
docker version
命令用于查看客户端和服务器端的 Docker 版本信息,确保环境兼容性。
docker info
命令查看 Docker 系统的详细信息,包括镜像、容器数量、存储驱动等,有助于系统管理和优化。
docker login
命令用于登录到 Docker Hub 或私有仓库,执行 docker logout
可注销登录,确保账号安全。
docker push
命令将本地镜像推送到镜像仓库。确保镜像名称与仓库命名空间匹配,便于镜像管理和分发。
docker commit
命令将容器的当前状态保存为新的镜像。建议使用 Dockerfile
构建镜像,以保证可重复性和一致性。
docker system prune
命令清理未使用的容器、网络、镜像等资源,释放磁盘空间,保持系统整洁。
查看磁盘空间使用情况可以使用 docker system df
,了解 Docker 相关资源占用的空间,便于磁盘管理。
导出镜像为文件:
docker save -o my-nginx-image.tar my-nginx-image
用于备份或传输镜像,方便在不同环境间迁移。
从文件导入镜像:
docker load -i my-nginx-image.tar
将导出的镜像文件加载到本地,快速恢复或部署镜像。
最佳实践
定期检查和清理未使用的 Docker 资源,防止磁盘空间不足。使用自动化脚本管理镜像和容器,提升运维效率。