- 文集信息
- 目录大纲
- 最新文档
- 知识宇宙
文集详情
文集导读
Docker 命令大全与常用操作
Docker 命令大全与常用操作详解
Docker 作为容器化技术的领头羊,其强大之处离不开丰富的命令集。掌握这些命令,能帮助我们更高效地构建、管理和部署容器化应用。本章节将详细介绍 Docker 常用命令,并结合实际操作场景进行讲解,力求让读者能够快速上手并灵活运用。
1. 镜像管理命令
镜像(Image)是 Docker 的基石,它包含了运行容器所需的所有文件系统、代码和依赖项。
1.1 docker pull:拉取镜像
从 Docker Hub 或其他镜像仓库拉取镜像到本地。
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
-
NAME: 镜像名称,如ubuntu、nginx。 -
TAG: 镜像标签,指定版本,如latest、16.04。 默认为latest。 -
DIGEST: 镜像摘要,用于唯一标识镜像版本。 -
OPTIONS: 常用选项包括:-
-a, --all-tags: 拉取所有 tagged 镜像。 -
--platform: 指定平台。
-
示例:
docker pull ubuntu:latest # 拉取 ubuntu 最新版本镜像 docker pull nginx:1.21 # 拉取 nginx 1.21 版本镜像
1.2 docker images:查看本地镜像
列出本地已下载的镜像。
docker images [OPTIONS] [REPOSITORY[:TAG]]
-
REPOSITORY: 镜像仓库名称。 -
TAG: 镜像标签。 -
OPTIONS: 常用选项包括:-
-a, --all: 显示所有镜像,包括中间层镜像。 -
-q, --quiet: 只显示镜像 ID。 -
--digests: 显示镜像摘要。 -
--format string: 使用 Go 模板格式化输出。
-
示例:
docker images # 列出所有镜像 docker images -q # 只显示镜像 ID docker images --format "{{.Repository}}:{{.Tag}}" # 自定义输出格式
1.3 docker rmi:删除镜像
删除本地镜像。
docker rmi [OPTIONS] IMAGE [IMAGE...]
-
IMAGE: 镜像名称或 ID。 -
OPTIONS: 常用选项包括:-
-f, --force: 强制删除镜像,即使有容器正在使用它。 -
--no-prune: 不要删除未打标签的父镜像。
-
示例:
docker rmi ubuntu:latest # 删除 ubuntu 最新版本镜像 docker rmi <image_id> # 通过镜像 ID 删除镜像 docker rmi -f <image_id> # 强制删除镜像
1.4 docker build:构建镜像
使用 Dockerfile 构建镜像。
docker build [OPTIONS] PATH | URL | -
-
PATH: Dockerfile 所在的目录路径。 -
URL: Dockerfile 的 URL 地址。 -
-: 从标准输入读取 Dockerfile。 -
OPTIONS: 常用选项包括:-
-t, --tag string: 指定镜像名称和标签,格式为name:tag。 -
-f, --file string: 指定 Dockerfile 的路径,默认为PATH/Dockerfile。 -
--build-arg list: 设置构建参数。 -
--no-cache: 不使用缓存。
-
示例:
docker build -t my-app:latest . # 在当前目录下构建镜像,并命名为 my-app:latest docker build -f Dockerfile.dev -t my-app:dev . # 指定 Dockerfile.dev 构建镜像 docker build --build-arg VERSION=1.0 -t my-app . # 设置构建参数 VERSION
1.5 docker push:推送镜像
将本地镜像推送到 Docker Hub 或其他镜像仓库。
docker push [OPTIONS] NAME[:TAG]
-
NAME: 镜像名称,必须包含仓库地址,例如username/my-app:latest。 -
TAG: 镜像标签。 -
OPTIONS: 常用选项包括:--disable-content-trust: 忽略内容信任。
示例:
docker push username/my-app:latest # 推送镜像到 Docker Hub
2. 容器管理命令
容器(Container)是镜像的运行实例,是 Docker 的核心组成部分。
2.1 docker run:创建并运行容器
从镜像创建并运行一个容器。
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
-
IMAGE: 镜像名称。 -
COMMAND: 容器启动后执行的命令。 -
ARG...: 命令的参数。 -
OPTIONS: 常用选项包括:-
-d, --detach: 在后台运行容器。 -
-p, --publish list: 端口映射,将宿主机的端口映射到容器的端口,格式为hostPort:containerPort。 -
-v, --volume list: 数据卷挂载,将宿主机的目录或文件挂载到容器的目录,格式为hostPath:containerPath。 -
--name string: 指定容器名称。 -
-e, --env list: 设置环境变量。 -
-it: 以交互模式运行容器,分配一个伪终端。 -
--rm: 容器停止后自动删除。 -
--restart always: 容器退出后自动重启。 -
--network string: 指定容器连接的网络。
-
示例:
docker run -d -p 8080:80 nginx:latest # 在后台运行 nginx 容器,并将宿主机的 8080 端口映射到容器的 80 端口 docker run -it ubuntu:latest /bin/bash # 以交互模式运行 ubuntu 容器,并进入 bash 终端 docker run --name my-app -e APP_ENV=production my-app:latest # 命名容器为 my-app,并设置环境变量 docker run -v /data:/app/data my-app:latest # 将宿主机的 /data 目录挂载到容器的 /app/data 目录 docker run --rm ubuntu:latest echo "Hello, Docker!" # 运行后自动删除容器
2.2 docker ps:查看容器
列出正在运行的容器。
docker ps [OPTIONS]
-
OPTIONS: 常用选项包括:-
-a, --all: 显示所有容器,包括已停止的容器。 -
-q, --quiet: 只显示容器 ID。 -
-l, --latest: 显示最近创建的容器。 -
--filter filter: 根据条件过滤容器。 -
--format string: 使用 Go 模板格式化输出。
-
示例:
docker ps # 列出正在运行的容器 docker ps -a # 列出所有容器 docker ps -q # 只显示容器 ID docker ps --filter "status=exited" # 显示已退出的容器
2.3 docker stop:停止容器
停止一个或多个正在运行的容器。
docker stop [OPTIONS] CONTAINER [CONTAINER...]
-
CONTAINER: 容器名称或 ID。 -
OPTIONS: 常用选项包括:-t, --time int: 等待容器正常停止的秒数,默认为 10 秒。
示例:
docker stop my-app # 停止名为 my-app 的容器 docker stop <container_id> # 通过容器 ID 停止容器
2.4 docker start:启动容器
启动一个已停止的容器。
docker start [OPTIONS] CONTAINER [CONTAINER...]
CONTAINER: 容器名称或 ID。
示例:
docker start my-app # 启动名为 my-app 的容器 docker start <container_id> # 通过容器 ID 启动容器
2.5 docker restart:重启容器
重启一个正在运行的容器。
docker restart [OPTIONS] CONTAINER [CONTAINER...]
-
CONTAINER: 容器名称或 ID。 -
OPTIONS: 常用选项包括:-t, --time int: 等待容器正常停止的秒数,默认为 10 秒。
示例:
docker restart my-app # 重启名为 my-app 的容器 docker restart <container_id> # 通过容器 ID 重启容器
2.6 docker kill:强制停止容器
强制停止一个正在运行的容器。 发送 SIGKILL 信号。
docker kill [OPTIONS] CONTAINER [CONTAINER...]
-
CONTAINER: 容器名称或 ID。 -
OPTIONS: 常用选项包括:-s, --signal string: 发送的信号,默认为 KILL。
示例:
docker kill my-app # 强制停止名为 my-app 的容器 docker kill <container_id> # 通过容器 ID 强制停止容器 docker kill -s SIGTERM <container_id> # 发送 SIGTERM 信号
2.7 docker rm:删除容器
删除一个或多个已停止的容器。
docker rm [OPTIONS] CONTAINER [CONTAINER...]
-
CONTAINER: 容器名称或 ID。 -
OPTIONS: 常用选项包括:-
-f, --force: 强制删除容器,即使容器正在运行。 -
-v, --volumes: 删除与容器关联的匿名卷。
-
示例:
docker rm my-app # 删除名为 my-app 的容器 docker rm <container_id> # 通过容器 ID 删除容器 docker rm -f <container_id> # 强制删除容器
2.8 docker exec:进入容器
在运行的容器中执行命令。
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
-
CONTAINER: 容器名称或 ID。 -
COMMAND: 要执行的命令。 -
ARG...: 命令的参数。 -
OPTIONS: 常用选项包括:-
-it: 以交互模式运行命令,分配一个伪终端。 -
-d, --detach: 在后台运行命令。 -
-u, --user string: 指定执行命令的用户。
-
示例:
docker exec -it my-app /bin/bash # 进入名为 my-app 的容器的 bash 终端 docker exec my-app ls -l /app # 在 my-app 容器中执行 ls -l /app 命令
2.9 docker logs:查看容器日志
查看容器的日志输出。
docker logs [OPTIONS] CONTAINER
-
CONTAINER: 容器名称或 ID。 -
OPTIONS: 常用选项包括:-
-f, --follow: 持续输出日志,类似于tail -f。 -
--since string: 显示自指定时间戳之后的日志。 -
--tail string: 只显示最新的 N 行日志。 -
--timestamps: 显示时间戳。
-
示例:
docker logs my-app # 查看名为 my-app 的容器的日志 docker logs -f my-app # 持续输出 my-app 容器的日志 docker logs --tail 100 my-app # 查看 my-app 容器最新的 100 行日志
2.10 docker stats:查看容器资源使用情况
查看容器的 CPU、内存、网络 IO 等资源使用情况。
docker stats [OPTIONS] [CONTAINER...]
-
CONTAINER: 容器名称或 ID。 如果不指定,则显示所有容器的统计信息。 -
OPTIONS: 常用选项包括:-
-a, --all: 显示所有容器的统计信息,包括已停止的容器。 -
--no-stream: 只显示一次统计信息。 -
--format string: 使用 Go 模板格式化输出。
-
示例:
docker stats # 查看所有容器的资源使用情况 docker stats my-app # 查看名为 my-app 的容器的资源使用情况
3. 网络管理命令
Docker 提供了灵活的网络管理功能,允许容器之间以及容器与宿主机之间进行通信。
3.1 docker network create:创建网络
创建一个新的 Docker 网络。
docker network create [OPTIONS] NETWORK
-
NETWORK: 网络名称。 -
OPTIONS: 常用选项包括:-
-d, --driver string: 指定网络驱动,常用的有bridge、overlay。 -
--subnet string: 指定网络的子网。 -
--gateway string: 指定网络的网关。
-
示例:
docker network create my-net # 创建一个名为 my-net 的 bridge 网络 docker network create --driver overlay --subnet 10.0.0.0/24 my-overlay-net # 创建一个 overlay 网络
3.2 docker network ls:查看网络
列出所有 Docker 网络。
docker network ls [OPTIONS]
-
OPTIONS: 常用选项包括:-
-q, --quiet: 只显示网络 ID。 -
--filter filter: 根据条件过滤网络。 -
--format string: 使用 Go 模板格式化输出。
-
示例:
docker network ls # 列出所有网络 docker network ls -q # 只显示网络 ID
3.3 docker network connect:连接容器到网络
将一个容器连接到一个或多个网络。
docker network connect [OPTIONS] NETWORK CONTAINER
-
NETWORK: 网络名称。 -
CONTAINER: 容器名称或 ID。 -
OPTIONS: 常用选项包括:--alias list: 为容器在网络中设置别名。
示例:
docker network connect my-net my-app # 将 my-app 容器连接到 my-net 网络 docker network connect --alias db my-net my-app # 将 my-app 容器连接到 my-net 网络,并设置别名为 db
3.4 docker network disconnect:从网络断开容器
将一个容器从网络中断开连接。
docker network disconnect [OPTIONS] NETWORK CONTAINER
-
NETWORK: 网络名称。 -
CONTAINER: 容器名称或 ID。 -
OPTIONS: 常用选项包括:-f, --force: 强制断开连接。
示例:
docker network disconnect my-net my-app # 将 my-app 容器从 my-net 网络中断开连接
3.5 docker network inspect:查看网络信息
查看 Docker 网络的详细信息。
docker network inspect [OPTIONS] NETWORK [NETWORK...]
-
NETWORK: 网络名称或 ID。 -
OPTIONS: 常用选项包括:--format string: 使用 Go 模板格式化输出。
示例:
docker network inspect my-net # 查看 my-net 网络的详细信息
3.6 docker network rm:删除网络
删除一个 Docker 网络。
docker network rm NETWORK [NETWORK...]
NETWORK: 网络名称或 ID。
示例:
docker network rm my-net # 删除 my-net 网络
4. 数据卷管理命令
数据卷(Volume)是 Docker 中用于持久化存储数据的机制。
4.1 docker volume create:创建数据卷
创建一个新的数据卷。
docker volume create [OPTIONS] [VOLUME]
-
VOLUME: 数据卷名称。 如果不指定,Docker 会自动生成一个随机名称。 -
OPTIONS: 常用选项包括:-
-d, --driver string: 指定数据卷驱动,常用的有local。 -
--opt map: 设置驱动选项。
-
示例:
docker volume create my-data # 创建一个名为 my-data 的数据卷 docker volume create --driver local --opt type=nfs,o=addr=192.168.1.10,rw,nfsvers=4.1,nolock,tcp,noatime,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 my-nfs-data # 创建一个 NFS 数据卷
4.2 docker volume ls:查看数据卷
列出所有 Docker 数据卷。
docker volume ls [OPTIONS]
-
OPTIONS: 常用选项包括:-
-q, --quiet: 只显示数据卷名称。 -
--filter filter: 根据条件过滤数据卷。 -
--format string: 使用 Go 模板格式化输出。
-
示例:
docker volume ls # 列出所有数据卷 docker volume ls -q # 只显示数据卷名称
4.3 docker volume inspect:查看数据卷信息
查看 Docker 数据卷的详细信息。
docker volume inspect [OPTIONS] VOLUME [VOLUME...]
-
VOLUME: 数据卷名称。 -
OPTIONS: 常用选项包括:--format string: 使用 Go 模板格式化输出。
示例:
docker volume inspect my-data # 查看 my-data 数据卷的详细信息
4.4 docker volume rm:删除数据卷
删除一个 Docker 数据卷。
docker volume rm VOLUME [VOLUME...]
VOLUME: 数据卷名称。
示例:
docker volume rm my-data # 删除 my-data 数据卷
4.5 docker volume prune:清理未使用的数据卷
删除所有未被使用的 Docker 数据卷。
docker volume prune [OPTIONS]
-
OPTIONS: 常用选项包括:-f, --force: 强制删除,无需确认。
示例:
docker volume prune -f # 删除所有未被使用的数据卷
5. Docker Compose
Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。它使用 YAML 文件来配置应用程序的服务,然后使用一个命令来创建并启动所有服务。
5.1 docker-compose up:启动 Compose 应用
使用 docker-compose.yml 文件启动 Compose 应用。
docker-compose up [OPTIONS] [SERVICE...]
-
OPTIONS: 常用选项包括:-
-d, --detach: 在后台运行 Compose 应用。 -
--build: 在启动之前构建镜像。 -
--force-recreate: 强制重新创建容器。 -
--scale SERVICE=NUM: 扩展指定服务的容器数量。
-
示例:
docker-compose up -d # 在后台启动 Compose 应用 docker-compose up --build # 在启动之前构建镜像 docker-compose up --scale web=3 # 扩展 web 服务的容器数量到 3 个
5.2 docker-compose down:停止并删除 Compose 应用
停止并删除 Compose 应用中的所有容器、网络和数据卷。
docker-compose down [OPTIONS]
-
OPTIONS: 常用选项包括:-
-v, --volumes: 删除与 Compose 应用关联的数据卷。 -
--rmi type: 删除 Compose 应用使用的镜像,type可以是all或local。
-
示例:
docker-compose down # 停止并删除 Compose 应用 docker-compose down -v # 停止并删除 Compose 应用,并删除关联的数据卷
5.3 docker-compose ps:查看 Compose 应用状态
列出 Compose 应用中所有容器的状态。
docker-compose ps [OPTIONS]
-
OPTIONS: 常用选项包括:-q, --quiet: 只显示容器 ID。
示例:
docker-compose ps # 列出 Compose 应用中所有容器的状态 docker-compose ps -q # 只显示容器 ID
5.4 docker-compose logs:查看 Compose 应用日志
查看 Compose 应用中所有容器的日志输出。
docker-compose logs [OPTIONS] [SERVICE...]
-
OPTIONS: 常用选项包括:-
-f, --follow: 持续输出日志,类似于tail -f。 -
--tail string: 只显示最新的 N 行日志。 -
--timestamps: 显示时间戳。
-
示例:
docker-compose logs # 查看 Compose 应用中所有容器的日志 docker-compose logs -f web # 持续输出 web 服务的日志
5.5 docker-compose exec:进入 Compose 应用容器
在 Compose 应用的容器中执行命令。
docker-compose exec [OPTIONS] SERVICE COMMAND [ARG...]
-
SERVICE: 服务名称。 -
COMMAND: 要执行的命令。 -
ARG...: 命令的参数。 -
OPTIONS: 常用选项包括:-
-it: 以交互模式运行命令,分配一个伪终端。 -
-u, --user string: 指定执行命令的用户。
-
示例:
docker-compose exec -it web /bin/bash # 进入 web 服务的 bash 终端 docker-compose exec db mysql -u root -p # 在 db 服务中执行 mysql 命令
6. 其他常用命令
-
docker info: 显示 Docker 系统信息,包括内核版本、CPU 数量、内存大小等。 -
docker version: 显示 Docker 版本信息。 -
docker login: 登录到 Docker Hub 或其他镜像仓库。 -
docker logout: 登出 Docker Hub 或其他镜像仓库。 -
docker search: 在 Docker Hub 上搜索镜像。 -
docker system prune: 清理未使用的 Docker 资源,包括镜像、容器、网络和数据卷。
7. 总结
本文详细介绍了 Docker 常用命令,涵盖了镜像管理、容器管理、网络管理、数据卷管理和 Docker Compose 等方面。 熟练掌握这些命令,将有助于你更好地使用 Docker 构建、管理和部署容器化应用。 希望本章节的内容能够帮助你快速入门 Docker,并在实际工作中灵活运用。
目录大纲
最新文档
知识宇宙
正在加载知识图谱...