【学习笔记】Docker命令大全
基本信息查询
查看 Docker 版本
此命令会展示客户端和服务端的 Docker 版本信息,对于确保不同环境中 Docker 版本兼容性十分重要。比如在团队协作开发时,统一 Docker 版本能避免因版本差异导致的问题。
docker version
查看 Docker 系统信息
执行该命令后,会输出 Docker 的系统级详细信息,涵盖镜像数量、容器数量、存储驱动类型、资源限制等内容。通过这些信息,可对当前 Docker 运行环境有全面了解,方便进行性能调优和资源管理。
docker info
列出正在运行的容器
它会列出当前正在运行的容器,显示容器 ID、使用的镜像、启动时间、运行状态、端口映射等关键信息,有助于快速掌握正在运行的容器情况。
docker ps
列出所有容器(包括停止的)
相比
docker ps
,该命令会列出所有容器,不管是正在运行还是已经停止的,方便查找和管理历史容器。docker ps -a
列出所有镜像
用于展示本地存储的所有 Docker 镜像,包括仓库源、标签、镜像 ID、创建时间和大小等信息,便于管理和清理本地镜像。
docker images
查看容器详细信息
将
<container>
替换为实际容器 ID 或名称,执行后会以 JSON 格式输出容器的详细信息,包括网络配置、挂载点、环境变量等,在排查容器问题时非常有用。docker inspect <container>
查看镜像详细信息
把
<image>
换成具体镜像 ID 或名称,能获取镜像的详细构建信息、分层情况等,对了解镜像内部结构和构建过程很有帮助。docker inspect <image>
查看 Docker 事件
该命令实时输出 Docker 运行时的各种事件,如容器的创建、启动、停止、删除,镜像的拉取、推送等,方便监控 Docker 系统的活动情况。
docker events
查看镜像历史
通过此命令,能查看指定镜像的构建历史,了解镜像从基础镜像开始,每一层的创建操作和大小变化,有助于分析镜像大小和优化镜像构建过程。
docker history <image>
查看容器资源使用情况
实时显示正在运行容器的 CPU、内存、网络、磁盘 I/O 等资源使用情况,对于监控容器性能和及时发现资源瓶颈意义重大。
docker stats
容器管理
后台运行容器
-d
参数让容器在后台运行,<image>
为要使用的镜像名称或 ID,常用于启动一些不需要用户实时交互的服务类容器,如数据库容器。docker run -d <image>
运行交互式容器
-it
参数表示以交互式终端方式运行容器,会进入容器的 Shell 环境,方便在容器内进行调试、配置等操作。例如在基于 Ubuntu 镜像的容器中安装软件包。docker run -it <image> /bin/bash
停止正在运行的容器
<container>
为要停止的容器 ID 或名称,正常停止容器,容器内的应用程序会收到停止信号,有机会进行一些清理操作。docker stop <container>
启动已停止的容器
用于重新启动一个已经停止的容器,让容器恢复到之前的运行状态。
docker start <container>
重启容器
先停止容器,再启动容器,可用于应用程序配置更新后,需要重启容器使新配置生效的场景。
docker restart <container>
强制停止容器
直接向容器发送 SIGKILL 信号,强制终止容器运行,适用于容器出现异常,无法正常停止的情况。
docker kill <container>
删除容器
移除指定的容器,在删除前,容器必须处于停止状态。若要删除正在运行的容器,可使用
docker rm -f <container>
,但这会强制停止并删除容器。docker rm <container>
连接到正在运行的容器
连接到一个正在运行的容器的标准输入、输出和错误流,不过当多个用户同时使用
attach
时,可能会出现输入输出混乱的情况,所以更推荐使用docker exec
。docker attach <container>
在容器中执行命令
在运行的容器内执行指定命令
<cmd>
,<container>
为容器 ID 或名称。例如在运行的 Nginx 容器中执行nginx -s reload
命令来重新加载配置。docker exec <container> <cmd>
重命名容器
将容器从
<old - name>
重命名为<new - name>
,方便对容器进行更有意义的命名,提高管理效率。docker rename <old - name> <new - name>
暂停容器
暂停容器内的所有进程,容器占用的资源会保持,但进程不再运行,常用于临时暂停某个容器的服务,又不想完全停止它。
docker pause <container>
恢复暂停的容器
让之前暂停的容器恢复运行,容器内的进程继续执行。
docker unpause <container>
更新容器配置
可用于更新容器的资源限制、重启策略等配置,例如通过
docker update --memory = "512m" <container>
为容器设置内存限制。docker update <container>
导出容器为 tar 包
将指定容器的文件系统导出为一个 tar 包,
<file>
为导出的文件名,常用于容器数据备份或在不同环境中迁移容器。docker export <container> > <file>
查看容器日志
输出容器内应用程序的标准输出和标准错误日志,通过这些日志能排查容器内应用程序的运行问题,如启动失败、运行时错误等。
docker logs <container>
阻塞等待容器退出
该命令会阻塞当前终端,直到指定容器退出,并返回容器的退出状态码,在脚本中可用于判断容器是否成功运行结束。
docker wait <container>
查看容器文件系统变化
显示容器文件系统相对于基础镜像的变化,包括新增、修改和删除的文件和目录,有助于了解容器内应用程序对文件系统的操作情况。
docker diff <container>
从容器中复制文件到宿主机
将容器
<container>
内的<path>
路径下的文件或目录复制到宿主机的<dest>
路径下,方便获取容器内生成的数据或配置文件。docker cp <container>:<path> <dest>
将容器保存为镜像
基于当前容器的状态和更改,创建一个新的镜像
<image>
,常用于将经过配置和调试后的容器固化为可复用的镜像。docker commit <container> <image>
镜像管理
将镜像推送到仓库
将本地镜像
<image>
推送到 Docker 仓库,前提是已经登录到相应的仓库,并且镜像名称符合仓库的命名规则。docker push <image>
构建镜像
-t
参数为构建的镜像指定名称和标签,<path>
为 Dockerfile 所在路径。Docker 会根据 Dockerfile 中的指令构建镜像,这是自定义镜像的重要方式。docker build -t <image> <path>
删除本地镜像
删除本地指定的镜像
<image>
,若镜像被多个容器使用,需先删除相关容器才能删除镜像。也可使用docker rmi -f <image>
强制删除镜像,但要谨慎操作,以免影响正在运行的容器。docker rmi <image>
给镜像添加标签
为已有的镜像
<image>
添加一个新的标签<new - tag>
,方便对镜像进行版本管理或标记不同用途的镜像。docker tag <image> <new - tag>
搜索镜像
在 Docker Hub 上搜索包含
<keyword>
的镜像,会列出镜像名称、描述、星级等信息,便于找到满足需求的基础镜像。docker search <keyword>
拉取镜像
从 Docker 仓库下载指定镜像
<image>
到本地,如果不指定标签,默认拉取latest标签的镜像。docker pull <image>
保存镜像为 tar 包
将指定镜像
<image>
保存为一个 tar 包<file>
,可用于在没有网络连接的环境中传输和加载镜像。docker save -o <file> <image>
从 tar 包加载镜像
从之前保存的 tar 包
<file>
中加载镜像到本地 Docker 环境,与docker save
配合使用,实现镜像的备份和恢复。docker load -i <file>
网络管理
列出网络
显示当前 Docker 环境中的所有网络,包括网络 ID、名称、驱动类型等信息,便于管理和查看容器网络配置。
docker network ls
创建网络
创建一个新的网络
<network>
,可指定网络驱动类型(如bridge
、overlay
等)以及其他网络配置参数,以满足不同的网络需求。docker network create <network>
删除网络
删除指定的网络
<network>
,删除前需确保没有容器连接到该网络。docker network rm <network>
查看网络详细信息
输出指定网络
<network>
的详细信息,如子网、网关、DNS 配置等,帮助了解网络的具体设置和运行状态。docker network inspect <network>
连接容器到网络
将正在运行的容器
<container>
连接到指定网络<network>
,使容器能够与该网络中的其他容器通信。docker network connect <network> <container>
从网络断开容器连接
将容器
<container>
从指定网络<network>
中断开连接,容器将无法再通过该网络与其他容器通信。docker network disconnect <network> <container>
卷管理
列出卷
展示当前 Docker 环境中所有的卷,包括卷的名称、驱动类型等信息,方便管理和查看容器数据存储。
docker volume ls
创建卷
创建一个新的卷
<volume>
,用于在容器间共享数据或持久化容器数据,避免容器删除时数据丢失。docker volume create <volume>
删除卷
删除指定的卷
<volume>
,删除前需确保没有容器在使用该卷。docker volume rm <volume>
查看卷详细信息
输出指定卷
<volume>
的详细信息,如挂载点、容量限制等,有助于了解卷的配置和使用情况。docker volume inspect <volume>
在容器中挂载卷
在启动容器时,将卷
<volume>
挂载到容器内的<container - path>
路径,实现容器与宿主机或其他容器之间的数据共享和持久化。例如docker run -v my - volume:/data nginx
将my - volume
卷挂载到 Nginx 容器的/data
目录。docker run -v <volume>:<container - path> <image>
容器运行选项
指定容器名称
使用
--name
参数为容器指定一个易于识别的名称<name>
,方便在后续管理中通过名称操作容器,而不是使用难以记忆的容器 ID。docker run --name <name> <image>
映射端口
将宿主机的端口
<host - port>
映射到容器内的端口<container - port>
,使外部可以通过宿主机端口访问容器内的服务。比如docker run -p 8080:80 nginx
将 Nginx 容器的 80 端口映射到宿主机的 8080 端口。docker run -p <host - port>:<container - port> <image>
设置环境变量
使用
-e
参数为容器设置环境变量<env - var>
,可以设置多个环境变量。例如docker run -e "DB_USER = root" -e "DB_PASSWORD = password" mysql
为 MySQL 容器设置数据库用户名和密码环境变量。docker run -e <env - var> <image>
限制容器资源
限制CPU
通过
--cpus
参数限制容器使用的 CPU 核心数,<number>
为具体的 CPU 核心数,如0.5
表示使用半个 CPU 核心。docker run --cpus = "<number>" <image>
限制内存
使用
--memory
参数设置容器可使用的最大内存,<size>
为内存大小,如512m
表示 512MB 内存。docker run --memory = "<size>" <image>
设置容器重启策略
--restart
参数用于设置容器的重启策略<policy>
,常见策略有always
(总是重启)、on - failure
(容器以非零状态码退出时重启)、no
(从不重启,默认值)。例如docker run --restart = always nginx
确保 Nginx 容器在任何情况下都自动重启。docker run --restart = <policy> <image>
Docker Compose
安装 Docker Compose
不同操作系统安装方式略有不同,以 Linux 为例,可通过以下命令安装:
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker - compose - $(uname - s)-$(uname - m)" -o /usr/local/bin/docker - compose sudo chmod +x /usr/local/bin/docker - compose
启动服务
在包含
docker - compose.yml
文件的目录下,执行:docker - compose up
停止服务
停止并删除由
docker - compose.yml
文件定义的所有服务容器、网络等资源。docker - compose down
重启服务
重启由
docker - compose.yml
文件定义的所有服务容器。docker - compose restart
查看服务状态
显示当前由
docker - compose.yml
文件管理的服务容器的运行状态,包括容器 ID、名称、状态等信息。docker - compose ps
构建镜像
根据
docker - compose.yml
文件中定义的服务,构建所需的镜像。如果镜像已经存在,会根据情况更新镜像。docker - compose build
执行命令
在指定的服务容器
<service>
内执行命令<command>
,例如docker - compose exec web python manage.py migrate
在名为web
的服务容器内执行 Django 的数据库迁移命令。docker - compose exec <service> <command>
Docker Swarm
初始化 Swarm 集群
在作为 Swarm 管理器的节点上执行,该命令会初始化一个新的 Swarm 集群,并输出加入集群的命令,用于其他节点加入该集群。
docker swarm init
加入 Swarm 集群
在需要加入集群的节点上,运行
docker swarm init
命令输出的加入指令,其中<token>
为集群认证令牌,<manager-ip>
是 Swarm 管理器的 IP 地址,<manager-port>
为对应的端口号,三者缺一不可。docker swarm join --token <token> <manager-ip>:<manager-port>
- 感谢你赐予我前进的力量