按命令分类来整理,参考链接:https://www.runoob.com/docker/docker-command-manual.html

容器生命周期管理

  • 创建并启动一个新容器——run
# 基本使用
docker run ubuntu
# 后台运行容器
docker run -d ubuntu
# 交互式运行并分配终端
docker run -it ubuntu /bin/bash
# 指定容器名称
docker run --name my_container ubuntu
# 端口映射
docker run -p 8080:80 nginx
# 挂载卷
docker run -v /host/data:/container/data ubuntu
# 设置环境变量
docker run -e MY_ENV_VAR=my_value ubuntu
# 使用网络模式
docker run --network host nginx
# 指定重启策略
docker run --restart always nginx
# 指定用户
docker run -u user123 ubuntu
# 组合多个选项
docker run -d -p 8080:80 -v /host/data:/data --name webserver nginx

# 常用参数说明:
-d: 后台运行容器并返回容器 ID。
-it: 交互式运行容器,分配一个伪终端。
--name: 给容器指定一个名称。
-p: 端口映射,格式为 host_port:container_port。
-v: 挂载卷,格式为 host_dir:container_dir。
--rm: 容器停止后自动删除容器。
--env 或 -e: 设置环境变量。
--network: 指定容器的网络模式。
--restart: 容器的重启策略(如 no、on-failure、always、unless-stopped)。
-u: 指定用户。
  • 启动、停止、重启容器——start/stop/restart
# 启动一个容器
docker start my_container
# 启动并附加到容器
docker start -a my_container
# 停止一个容器
docker stop my_container
# 指定等待时间停止容器,这里是30秒
docker stop -t 30 my_container
# 重启一个容器
docker restart my_container
# 指定等待时间重启容器
docker restart -t 15 my_container
  • 立即终止一个或多个正在运行的容器——kill
# 立即终止一个容器
docker kill my_container
# 发送自定义信号
docker kill -s SIGTERM my_container
# 常用信号
SIGKILL: 强制终止进程(默认信号)。
SIGTERM: 请求进程终止。
SIGINT: 发送中断信号,通常表示用户请求终止。
SIGHUP: 挂起信号,通常表示终端断开。
  • 删除一个或多个已经停止的容器——rm
# 删除单个容器
docker rm <container_id_or_name>
# 删除多个容器,只需将容器 ID 或名称用空格分隔
docker rm <container_id_or_name1> <container_id_or_name2>
# 删除所有已停止的容器
docker container prune
  • 暂停和恢复容器中的所有进程——pause/unpause
# 暂停一个容器
docker pause my_container
# 恢复一个容器
docker unpause my_container
  • 创建一个新的容器,但不会启动它——create
# 创建一个容器
docker create ubuntu
# 创建并指定容器名称
docker create --name my_container ubuntu
# 创建并设置环境变量
docker create -e MY_ENV_VAR=my_value ubuntu
# 创建并挂载卷
docker create -v /host/data:/container/data ubuntu
# 创建并端口映射
docker create -p 8080:80 nginx
# 创建并指定重启策略
docker create --restart always nginx
# 创建并指定用户
docker create -u user123 ubuntu
  • 在运行中的容器内执行一个新的命令——exec
# 在容器内运行命令
docker exec my_container ls /app
# 以交互模式运行命令
docker exec -it my_container /bin/bash
# 在后台运行命令
docker exec -d my_container touch /app/newfile.txt
# 设置环境变量
docker exec -e MY_ENV_VAR=my_value my_container env
# 以指定用户身份运行命令
docker exec -u user123 my_container whoami
# 指定工作目录
docker exec -w /app my_container pwd

容器操作

  • 列出容器——ps
# 列出所有在运行的容器信息
docker ps
# 列出所有容器,包括停止的容器
docker ps -a
# 只显示容器ID
docker ps -q
# 显示最近创建的一个容器
docker ps -l
# 显示容器的大小
docker ps -s
  • 获取对象(容器、镜像、卷、网络等)的详细信息——inspect
# 检查容器
docker inspect my_container
# 检查镜像
docker inspect my_image
# 检查卷
docker inspect my_volume
# 检查网络
docker inspect my_network
# 格式化输出
docker inspect --format '{{ .State.Running }}' my_container
  • 显示指定容器中的正在运行的进程——top
# 查看容器内的进程
docker top my_container
# 使用自定义ps选项
docker top my_container -o pid,comm
  • 允许用户附加到正在运行的容器并与其交互——attach
docker attach my_container
  • 获取容器守护进程生成的事件——events
docker events
  • 获取和查看容器的日志输出——logs
# 显示容器日志
docker logs my_container
# 跟随日志输出
docker logs -f my_container
# 显示带时间戳的日志
docker logs -t my_container
# 从指定时间开始显示日志
docker logs --since="2023-07-22T15:00:00" my_container
  • 允许用户等待容器停止并获取其退出代码——wait
docker wait my_container
  • 将容器的文件系统导出为tar归档文件——export
# 导出容器文件系统
docker export my_container
# 将导出文件保存为tar文件
docker export my_container > my_container_backup.tar
  • 显示容器的端口映射信息——port
# 查看容器的所有端口映射
docker port my_container
# 查看特定端口的映射
docker port my_container 80
# 查看特定端口和协议的映射
docker port my_container 80/tcp
  • 实时显示容器的资源使用情况——stats
# 显示所有运行的容器的资源使用情况
docker stats
# 显示指定容器的资源使用情况
docker stats my_container
# 显示所有容器(包括未运行的容器)的资源使用情况
docker stats --all

容器root文件系统(rootfs)命令

  • 允许用户将容器的当前状态保存为新的Docker镜像——commit
docker commit my_container my_new_image
docker commit my_container my_new_image:latest
  • 用于在容器和宿主机之间复制文件或目录——cp
# 从容器复制文件到宿主机
docker cp my_container:/path/in/container /path/on/host
# 从宿主机复制文件到容器
docker cp /path/on/host my_container:/path/in/container
# 从容器复制目录到宿主机
docker cp my_container:/path/in/container /path/on/host
# 从宿主机复制目录到容器
docker cp /path/on/host my_container:/path/in/container
  • 显示容器文件系统的变更——diff
docker diff my_container

镜像仓库

  • 管理Docker客户端与Docker注册表的身份验证——login/logout
# 登录
docker login
docker login myregistry.com
# 退出
docker logout
docker logout myregistry.com
  • 从Docker注册表(例如Docker Hub)中拉取(下载)镜像到本地。
docker pull ubuntu
docker pull ubuntu:20.04
  • 将本地构建的Docker镜像推送(上传)到Docker注册表(如Docker Hub或私有注册表)。
docker push myrepo/myimage
docker push myrepo/myimage:1.0
  • 用于在Docker Hub或其他注册表中搜索镜像
docker search ubuntu

本地镜像管理

  • 列出本地的Docker镜像——images
docker images
  • 删除不再需要的镜像——rmi
docker rmi ubuntu:latest
  • 创建本地镜像的tag——tag
docker tag myimage:1.0 myrepo/myimage:latest
  • 从Dockerfile构建Docker镜像——build
docker build -t myimage:latest .
  • 查看指定镜像的历史层信息——history
docker history nginx:latest
  • 将一个或多个Docker镜像保存到一个tar归档文件中——save
docker save -o myimage.tar myimage:latest
  • 从由docker save命令生成的tar文件中加载Docker镜像——load
docker load -i myimage.tar
  • 从一个tar文件或URL导入容器快照,从而创建一个新的Docker镜像——import
# tar文件
docker import mycontainer.tar mynewimage:latest
# URL文件
docker import http://example.com/mycontainer.tar mynewimage:latest

info|version

  • 显示Docker的系统级信息,包括当前的镜像和容器数量
# docker info
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc., 0.8.1)
  compose: Docker Compose (Docker Inc., 2.3.3)

Server:
 Containers: 3
  Running: 1
  Paused: 0
  Stopped: 2
 Images: 10
 Server Version: 20.10.7
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: d71fcd7d8303cbf684402823e425e9dd2e99285d
 runc version: b9ee9c6314599f1b4a7f497e1f1f856fe433d3b7
 init version: de40ad0
 Security Options:
  seccomp
   Profile: default
  selinux
 Kernel Version: 5.10.25-linuxkit
 Operating System: Docker Desktop
 OSType: linux
 Architecture: x86_64
 CPUs: 2
 Total Memory: 1.942GiB
 Name: docker-desktop
 ID: 3WZ2:ZQ7K:6K4E:6ZCR:YITZ:GH2S:6NUB:HTB5:OS7K:AAUI:K7CC:JZL3
 Docker Root Dir: /var/lib/docker
 Debug Mode: true
  File Descriptors: 45
  Goroutines: 49
  System Time: 2024-07-23T09:41:47.2527914Z
  EventsListeners: 4
 HTTP Proxy: http://proxy.example.com:80
 HTTPS Proxy: https://proxy.example.com:443
 No Proxy: localhost,127.0.0.1,docker-registry.example.com
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Registry Mirrors:
 Live Restore Enabled: false

WARNING: No swap limit support

# 输出解释:
Client: Docker 客户端的相关信息。

Context: 当前 Docker 上下文。
Debug Mode: 客户端是否开启调试模式。
Plugins: 安装的客户端插件,如 buildx 和 compose。
Server: Docker 服务端(守护进程)的相关信息。

Containers: 容器的总数。
Running: 运行中的容器数量。
Paused: 暂停中的容器数量。
Stopped: 停止的容器数量。
Images: 镜像的总数。
Server Version: Docker 服务端的版本号。
Storage Driver: 使用的存储驱动(如 overlay2)。
Backing Filesystem: 后端文件系统类型。
Supports d_type: 是否支持 d_type。
Native Overlay Diff: 是否支持原生 Overlay 文件系统。
Logging Driver: 使用的日志驱动(如 json-file)。
Cgroup Driver: 使用的 Cgroup 驱动(如 cgroupfs)。
Cgroup Version: Cgroup 的版本(如 1)。
Plugins: 服务端插件列表,包括卷、网络和日志插件。
Swarm: Swarm 模式的状态(如 inactive)。
Runtimes: 支持的运行时(如 runc)。
Default Runtime: 默认运行时(如 runc)。
Init Binary: 初始化二进制文件(如 docker-init)。
containerd version: 使用的 containerd 版本。
runc version: 使用的 runc 版本。
init version: 使用的 init 版本。
Security Options: 启用的安全选项(如 seccomp 和 selinux)。
Kernel Version: 内核版本。
Operating System: 操作系统名称。
OSType: 操作系统类型(如 linux)。
Architecture: 系统架构(如 x86_64)。
CPUs: CPU 数量。
Total Memory: 总内存。
Name: Docker 主机名。
ID: Docker 实例 ID。
Docker Root Dir: Docker 根目录。
Debug Mode: 服务端是否开启调试模式。
File Descriptors: 文件描述符数量。
Goroutines: Goroutines 数量。
System Time: 系统时间。
EventsListeners: 事件监听器数量。
HTTP Proxy: 配置的 HTTP 代理。
HTTPS Proxy: 配置的 HTTPS 代理。
No Proxy: 不使用代理的地址列表。
Registry: 使用的注册表地址。
Labels: 配置的标签。
Experimental: 是否启用了实验性功能。
Insecure Registries: 配置的不安全注册表列表。
Registry Mirrors: 注册表镜像列表。
Live Restore Enabled: 是否启用了实时恢复功能。
  • 显示Docker客户端和服务端的版本信息
# docker version
Client: Docker Engine - Community
 Version:           20.10.7
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        f0df350
 Built:             Wed Jun  2 11:57:37 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.7
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       b0f5bc3
  Built:            Wed Jun  2 11:55:47 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.6
  GitCommit:        d71fcd7d8303cbf684402823e425e9dd2e99285d
 runc:
  Version:          1.0.0-rc95
  GitCommit:        b9ee9c6314599f1b4a7f497e1f1f856fe433d3b7
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

# 输出解释:
Client: Docker 客户端的相关信息。

Version: 客户端的版本号。
API version: API 的版本号。
Go version: 编译 Docker 客户端所用的 Go 语言版本。
Git commit: 该版本对应的 Git 提交 ID。
Built: 构建日期。
OS/Arch: 操作系统和架构。
Context: 当前 Docker 上下文。
Experimental: 是否启用了实验性功能。
Server: Docker 服务端(守护进程)的相关信息。

Engine:
Version: 服务端的版本号。
API version: API 的版本号(以及支持的最低版本)。
Go version: 编译 Docker 服务端所用的 Go 语言版本。
Git commit: 该版本对应的 Git 提交 ID。
Built: 构建日期。
OS/Arch: 操作系统和架构。
Experimental: 是否启用了实验性功能。
containerd: Docker 使用的 containerd 版本和 Git 提交 ID。
runc: Docker 使用的 runc 版本和 Git 提交 ID。
docker-init: Docker 使用的 docker-init 版本和 Git 提交 ID。

网络命令

  • 列出所有网络
docker network ls
  • 查看网络详细信息
docker network inspect
  • 创建一个新网络
docker network create
  • 删除一个或多个网络
docker network rm
  • 将一个容器连接到一个网络
docker network connect
  • 将一个容器从一个网络断开
docker network disconnect

卷命令

  • 列出所有卷
docker volume ls
  • 查看卷的详细信息
docker volume inspect
  • 创建一个新卷
docker volume create
  • 删除一个或多个卷
docker volume rm
  • 删除未使用的卷
docker volume prune
posted on 2024-09-18 21:47  jiayou111  阅读(29)  评论(0编辑  收藏  举报