Docker 是一个开源的应用容器引擎,它允许开发者将应用程序及其依赖打包到一个可移植的容器中。以下是对常用 Docker 命令的详细解释,包括每个命令中的参数含义、语法格式以及使用示例。
1. 镜像相关命令
查看本地已有的镜像
docker images [OPTIONS]
功能:列出本地所有已下载或构建的镜像。
参数说明:
[OPTIONS]
:可选参数,例如:-a, --all
:显示所有镜像(包括中间层镜像)。--digests
:显示摘要信息。--no-trunc
:不截断输出。
示例:
docker images
docker images -a
从远程仓库拉取镜像
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
功能:从远程仓库(如 Docker Hub)下载指定镜像。
参数说明:
NAME
:镜像名称,例如nginx
,mysql
,redis
。TAG
:镜像标签(版本),例如latest
,8.0.36
,6.2-alpine
。DIGEST
:镜像的唯一哈希值(用于精确匹配特定镜像)。[OPTIONS]
:可选参数,例如:-a, --all-tags
:拉取所有标签的镜像。
示例:
docker pull nginx:latest docker pull mysql@sha256:abc123... docker pull minio/minio:RELEASE.2022-01-04T07-41-07Z
构建镜像(基于 Dockerfile)
docker build [OPTIONS] PATH | URL | -
功能:根据当前目录下的
Dockerfile
构建一个新的镜像。参数说明:
PATH
:包含Dockerfile
的本地路径(通常为当前目录URL
:远程 Git 仓库地址。-
:表示从标准输入读取内容。[OPTIONS]
:可选参数,例如:-t, --tag stringArray
:指定镜像名称和标签,例如my-app:latest
。--build-arg key=value
:传递构建时变量。--no-cache
:不使用缓存。
示例:
docker build -t my-app . docker build -t my-app:v1 https://github.com/yourname/repo.git#main
删除本地镜像
docker rmi [OPTIONS] IMAGE [IMAGE...]
功能:删除一个或多个本地镜像。
参数说明:
IMAGE
:镜像名称或 ID,例如nginx
,redis:6.2-alpine
,f5f171121fa3
。[OPTIONS]
:可选参数,例如:-f, --force
:强制删除镜像,即使有容器正在使用该镜像。
示例:
docker rmi nginx docker rmi redis:6.2-alpine mysql:8.0.36
导出镜像为 tar 文件
docker save [OPTIONS] IMAGE > FILE
功能:将一个或多个镜像打包成
.tar
文件,便于备份或迁移。参数说明:
IMAGE
:要导出的镜像名称或 ID。[OPTIONS]
:可选参数,例如:-o, --output string
:指定输出文件名。
示例:
docker save -o nginx.tar nginx docker save -o app-images.tar my-app:latest test-dev-doc-server:latest
导入镜像
docker load [OPTIONS] < FILE
功能:从
.tar
文件中加载镜像。参数说明:
FILE
:镜像文件路径。[OPTIONS]
:可选参数,例如:-i, --input string
:指定输入文件。
示例:
docker load -i nginx.tar
推送镜像到远程仓库
docker push [OPTIONS] NAME[:TAG]
功能:将本地镜像推送到远程仓库(如 Docker Hub 或私有 Registry)。
参数说明:
NAME
:镜像名称,必须是已登录账户下的命名空间,例如username/myapp
。TAG
:镜像标签。[OPTIONS]
:可选参数,例如:--disable-content-trust
:禁用内容信任(默认启用)。
前提条件:
必须先使用
docker login
登录远程仓库。
示例:
docker push my-app:latest
2. 容器相关命令
运行一个新的容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
功能:启动一个新的容器实例。
参数说明:
IMAGE
:使用的镜像名称。[COMMAND] [ARG...]
:覆盖镜像中的默认启动命令。[OPTIONS]
:常见选项包括:-d
:后台运行容器。-p HOST_PORT:CONTAINER_PORT
:端口映射。--name string
:指定容器名称。-v HOST_PATH:CONTAINER_PATH
:挂载数据卷。-e KEY=VALUE
:设置环境变量。
示例:
docker run -d -p 80:80 --name my-nginx nginx docker run -d -p 3306:3306 -v /host/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql
列出正在运行的容器
docker ps [OPTIONS]
功能:列出当前正在运行的容器。
参数说明:
[OPTIONS]
:可选参数,例如:-a
:显示所有容器(包括停止的)。-q
:仅显示容器 ID。
示例:
docker ps docker ps -a
查看当前运行的 MinIO 容器版本
docker exec -it minio minio --version
**说明**:
minio
是容器名称(与NAMES
列一致)。该命令会进入容器并执行
minio --version
来输出版本号。
示例输出(仅供参考)
minio version RELEASE.2022-01-04T07-41-07Z
这个输出表示你正在使用的是 MinIO 的 RELEASE.2021-06-17
版本。
停止容器
docker stop CONTAINER_ID
功能:优雅地停止一个正在运行的容器。
参数说明:
CONTAINER_ID
:容器 ID 或名称。
示例:
docker stop my-nginx
启动已停止的容器
docker start CONTAINER_ID
功能:重新启动一个已停止的容器。
参数说明:
CONTAINER_ID
:容器 ID 或名称。
示例:
docker start my-nginx
重启容器
docker restart CONTAINER_ID
功能:重启一个正在运行的容器。
参数说明:
CONTAINER_ID
:容器 ID 或名称。
示例:
docker restart my-nginx
进入正在运行的容器
docker exec -it CONTAINER_ID /bin/bash
功能:进入容器内部执行命令。
参数说明:
-it
:交互式终端模式。/bin/bash
:容器内使用的 shell(如果容器没有 bash,可以尝试/bin/sh
)。
示例:
docker exec -it my-nginx /bin/bash
删除容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]
功能:删除一个或多个容器。
参数说明:
CONTAINER
:容器 ID 或名称。[OPTIONS]
:可选参数,例如:-f, --force
:强制删除正在运行的容器。
示例:
docker rm my-nginx
查看容器日志
docker logs [OPTIONS] CONTAINER_ID
功能:查看容器的标准输出日志。
参数说明:
[OPTIONS]
:可选参数,例如:-f
:持续跟踪日志。--tail N
:只显示最后 N 行。
示例:
docker logs my-nginx docker logs -f my-nginx
查看容器详细信息
docker inspect CONTAINER_ID
功能:查看容器的详细配置信息(IP、网络、存储等)。
参数说明:
CONTAINER_ID
:容器 ID 或名称。
示例:
docker inspect my-nginx
复制文件到容器或从容器复制文件
docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
功能:在宿主机和容器之间复制文件。
参数说明:
SRC_PATH
:源路径。DEST_PATH
:目标路径。
示例:
docker cp ./test.txt my-nginx:/tmp/test.txt docker cp my-nginx:/tmp/test.txt ./
3. 网络相关命令
创建自定义网络
docker network create [OPTIONS] NETWORK
功能:创建一个自定义网络(桥接、覆盖等)。
参数说明:
NETWORK
:网络名称。[OPTIONS]
:可选参数,例如:--driver bridge
:指定网络驱动(默认为bridge
)。--subnet CIDR
:指定子网范围。
示例:
docker network create my-network
连接容器到网络
docker network connect NETWORK CONTAINER
功能:将容器加入到指定网络。
参数说明:
NETWORK
:网络名称。CONTAINER
:容器 ID 或名称。
示例:
docker network connect my-network my-nginx
断开容器与网络的连接
docker network disconnect NETWORK CONTAINER
功能:将容器从指定网络中断开。
参数说明:
NETWORK
:网络名称。CONTAINER
:容器 ID 或名称。
示例:
docker network disconnect my-network my-nginx
删除网络
docker network rm NETWORK
功能:删除一个未被使用的网络。
参数说明:
NETWORK
:网络名称。
示例:
docker network rm my-network
4. 数据卷相关命令
创建数据卷
docker volume create VOLUME_NAME
功能:创建一个持久化数据卷。
参数说明:
VOLUME_NAME
:数据卷名称。
示例:
docker volume create my-volume
挂载数据卷到容器
docker run -v VOLUME_NAME:PATH_IN_CONTAINER ...
功能:将数据卷挂载到容器的某个路径。
参数说明:
VOLUME_NAME
:数据卷名称。PATH_IN_CONTAINER
:容器内的目标路径。
示例:
docker run -d -v my-volume:/data --name my-container alpine
清理未使用的数据卷
docker volume prune
功能:删除所有未被使用的数据卷。
示例:
docker volume prune
5. 其他常用命令
查看 Docker 版本信息
docker version
功能:显示 Docker 客户端和服务器的版本信息。
查看 Docker 系统信息
docker info
功能:显示系统级信息,如容器数量、镜像数量、存储驱动等。
清理未使用的镜像、容器、网络和数据卷
docker system prune
功能:清理所有未使用的资源。
可选参数:
-a
:同时删除所有未使用的镜像(不只是悬空镜像)。
示例:
docker system prune docker system prune -a
批量操作容器
获取所有容器 ID
docker ps -aq
批量停止容器
docker stop $(docker ps -aq)
批量删除容器
docker rm $(docker ps -aq)
批量删除镜像
docker rmi $(docker images -q)