1.docker 常用命令

1. docker search [OPTIONS] NAME   # 搜索 Docker Hub 上的镜像。
-q :只显示仓库名。
--filter: 设置过滤条件,比如搜索官方镜像可以使用--filter="is-official=true"。
limit: 设置搜索结果的最大条数。
--no-trunc: 显示完整的镜像描述,而不是截断的描述。
例子: docker search --filter=version=1.17.1 nginx

2. docker pull [OPTIONS] NAME  # 从仓库拉取或者更新指定的镜像。
--all-tags`:拉取仓库中所有标签的镜像。
-a, --arch string`:设置镜像的CPU体系结构。
--disable-content-trust`:禁用对镜像签名的验证。
--platform string`:指定镜像的平台,可以是多个值,用逗号分隔。
--quiet, -q`:安静模式,只输出镜像ID。
--help`:显示帮助信息。
--version`:显示版本信息。
例子: docker pull example

3. docker images [OPTIONS]  # 列出本地存储的镜像。
-a, --all:显示所有镜像,未标记为最新的历史镜像。
--digests:显示每个镜像的摘要信息,这些信息有助于验证镜像内容的完整性。
-f, --filter:通过设置过滤条件来缩小查询结果,比如可以根据仓库名、标签、镜像ID等来过滤。
--format:指定输出格式,可以是文本或者JSON等,以便于脚本处理或者与其他工具集成。
--no-trunc:不截断输出,默认情况下,如果输出内容太长,docker images命令会截断显示。
-q, --quiet:只显示镜像ID。
REPOSITORY:镜像的仓库源,比如ubuntu、centos等。
TAG:镜像的标签,通常代表镜像的版本或者特性,如latest代表最新版本。
IMAGE ID:镜像的唯一ID,用于识别镜像。
CREATED:镜像的创建时间。
SIZE:镜像的大小,通常以MB或者KB表示。
例子:docker images -a

4. docker rmi [OPTIONS] IMAGE [IMAGE...]  # 删除一个或多个镜像。
-a:显示所有容器,包括未停止的容器。
-f, --filter <filter>:通过指定的过滤器来显示特定条件的容器。
-l, --label <label>:显示具有指定标签的容器。
-n, --no-trunc:不截断容器状态。
-q:仅显示容器的ID,不显示其他详细信息。
-s:按容器使用情况(CPU、内存等)进行排序。
-u:按容器的用户ID进行排序。
-p:显示公共镜像ID。
--format <template>:指定输出格式,支持的模板语法有text和json。
例子:docker rmi $(docker images -aqf "dangling=true")  # 删除所有未使用的镜像

5. docker run [OPTIONS] IMAGE [COMMAND] [ARG...]   # 创建并启动一个新的容器。
-d: 后台运行容器。使用这个选项,容器会在后台运行,并且返回容器ID,让你可以查看到运行中的容器。
-i: 以交互模式运行容器。即使容器在后台运行,也会保持STDIN开启,允许你交互式地进入容器。
-t: 分配一个伪终端。通常与 -i 结合使用,让你可以在容器内有一个终端会话。
--name: 为容器指定一个名称。如果未指定,Docker会随机生成一个名称。
-p: 端口映射。将容器的端口映射到宿主机的端口。例如 -p 8080:80 将容器的80端口映射到宿主机的8080端口。
-v: 挂载卷。将宿主机的目录或文件挂载到容器中。例如 -v /my/local/path:/my/container/path。
--network: 指定容器使用的网络类型。例如 --network=bridge 使用默认桥接网络。
--env: 设置容器环境变量。例如 --env KEY=value。
--rm: 当容器退出时自动删除容器。通常用于短生命周期的容器。
--link: 创建一个链接到另一个容器的网络连接。例如 --link db:db。
--privileged: 以特权模式运行容器,这意味着容器将获得所有主机设备的访问权限。
--volume-driver: 指定容器数据卷的驱动程序。
--ulimit: 设置容器的资源限制,如 --ulimit nproc=4 限制进程数。
--detach-keys: 指定分离容器的键盘序列。
--env-file: 从文件中读取环境变量。
--hostname: 设置容器的主机名。
--dns: 设置容器使用的 DNS 服务器。
--shm-size: 设置容器的共享内存大小。
--add-host: 通过指定 --add-host 参数,可以将自定义的主机名与相应的IP地址关联起来,以便在容器内部使用这些自定义主机名进行网络通信。
--annotation: 允许为容器添加注释,注释是容器的元数据,用于提供额外信息,比如作者、版本、构建日期等。
--restart: 设置容器的重启策略,如 --restart=always 表示容器退出时总是重启。
--cpu-shares: 设置容器CPU权重。
例子:docker run -d -it --name yoyo_centos centos:7

6. docker ps [OPTIONS]  # 列出当前运行的容器。
-a:显示所有容器,包括未停止的容器。
-f, --filter <filter>:通过指定的过滤器来显示特定条件的容器。
-l, --label <label>:显示具有指定标签的容器。
-n, --no-trunc:不截断容器状态。
-q:仅显示容器的ID,不显示其他详细信息。
-s:按容器使用情况(CPU、内存等)进行排序。
-u:按容器的用户ID进行排序。
-p:显示公共镜像ID。
--format <template>:指定输出格式,支持的模板语法有text和json。
例子:docker ps -a

7. docker stop [OPTIONS] CONTAINER [CONTAINER...]  # 停止一个或多个运行中的容器。
-t, --time int:指定停止容器前的等待时间,单位为秒,默认为10秒。
-容器ID或容器名称:要停止的容器的ID或名称。可以同时指定多个容器。
例子:docker stop abc123def456

8. docker start [OPTIONS] CONTAINER [CONTAINER...]  # 启动一个或多个停止的容器。
-a, --attach:在容器启动时附加到容器的标准输入。
-d, --detach:在后台启动容器,不显示容器控制台输出。
-i, --interactive:容器的标准输入保持打开,并在容器启动时附加到它。
-t, --tty:分配一个伪终端(PTY)到容器,即使容器不是交互式的话也启用终端设备。
-n, --name:为正在运行的容器指定一个新名称。
all:启动所有已停止的容器。
例子:docker start <container_id>

9. docker restart [OPTIONS] CONTAINER [CONTAINER...]  # 重启一个或多个容器。
-name:指定要重启的容器名称。
-id 或 -id=*: 指定要重启的容器 ID。
-l 或 --label=*: 指定要重启的容器标签。
例子:docker restart mycontainer

10. docker logs [OPTIONS] CONTAINER  # 获取容器的日志。
-f 或 --follow:持续输出日志,直到命令被取消或容器停止。
--since:输出指定时间之后的日志。
--until:输出到指定时间之前的日志。
-t 或 --timestamps:在日志中显示时间戳。
--tail:输出最近的指定行数日志。
--details:更详细的日志信息,包括容器名称和退出码。
例子:docker logs my-container

11. docker exec [OPTIONS] CONTAINER [COMMAND] [ARG...]  # 在运行的容器中执行命令。
-it 表示交互式执行,即进入容器并打开一个交互式终端。[container_id/container_name] 是要执行命令的 Docker 容器,可以是容器 ID 或容器名称。[command] 是要在容器中执行的命令。
-d:在后台运行命令,并返回容器的 ID。
--privileged:给予容器特殊的权限,允许它访问和修改根文件系统、设备节点和内核对象。
--net=[network_name/network_id]:指定要使用的网络。
--pid=[pid_mode]:指定 PID 隔离模式。
--privileged=true/false:是否给予容器特殊的权限。
--name=[container_name]:为执行命令的容器指定一个名称。
--rm:当容器退出时自动删除容器。
--env=KEY=VALUE:设置环境变量。
--volume=[host_path:]container_path[:options]:挂载主机目录或 Docker 卷到容器内。
例子:docker exec -it 4496a6e86fb2 /bin/bash  # 进入运行的docker

12. docker inspect [OPTIONS] NAME|ID  # 获取容器的配置信息。
-f, --format: 指定要显示的信息格式。可以使用模板语法来指定要显示的信息。例如,`{{.ID}}`将只显示容器的ID。
-o, --output: 指定要输出的字段。可以使用逗号分隔的字段名称列表来指定要显示的信息。
< container>: 要查看的容器名称或ID。
例子:docker inspect my_container

13. docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH  # 从容器中复制文件或目录到本地文件系统。
[OPTIONS]: 这是可选参数,可以根据需要选择使用。
CONTAINER:SRC_PATH: 容器ID或名称以及源路径。SRCPATH 指定在容器内需要复制的文件的路径。例如 96f7f14e99ab:/www/ 表示容器ID为 96f7f14e99ab 中的 /www/ 目录。
DEST_PATH: 目标路径,可以是宿主机的路径或容器内的路径。如果目标路径是宿主机的路径,则表示将容器内的文件复制到宿主机上;如果目标路径是容器内的路径,则表示将宿主机的文件复制到容器内。例如 /www/ 可以是宿主机的路径,或者 96f7f14e99ab:/www/ 表示容器内的路径。
-a, --archive: 归档模式,复制所有UID / GID信息,相当于 cp -a。
-L, --follow-link: 如果源是符号链接,则复制链接指向的文件。
-p, --preserve=mode,links,ownership: 保留文件的权限、链接和所有权。
-q, --quiet: 只显示错误信息。
-d, --directory: 复制目录而非文件,保持目录结构。
例子:docker cp myfile.txt mycontainer:/data/

14. docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]  # 将容器的当前状态作为一个新的镜像保存。
-a, --author string:指定作者信息。
-c, --change list:在提交时应用一系列的Dockerfile指令。
-m, --message string:提交时的信息。
-p, --pause:提交过程中暂停容器(默认为真)。
例子:docker commit my_container my_new_image

15. docker diff [OPTIONS] CONTAINER  # 显示容器的更改。
-a: 列出所有变化的层。
-d: 列出并显示 diff。
-f FILE: 从指定文件读取查看改变信息。
-m FILE: 从指定文件读取并显示层的内容差异。
-r: 递归查看子镜像。
例子:docker diff mycontainer

16. docker push:用于将本地镜像推送到 Docker 仓库。参数说明:
* `repository/image_name`: 要推送的镜像的仓库和名称。
例子:docker push my-image:latest

17. docker rm:用于删除停止的容器。参数说明:
* `container_name`: 指定要删除的容器的名称或 ID。
例子:docker rm $(docker ps -a -q)  # 删除多个已停止的容器

18. docker build:用于从 Dockerfile 构建镜像。参数说明:
* `-t tag_name`: 指定镜像的名称。
* `-f Dockerfile`: 使用自定义的 Dockerfile 进行构建。
* `context/path/to/dir`: 指定构建上下文路径。
例子:docker build -t myimage .

19. docker volume
--name:指定volume的名称,名称最好具有唯一性,方便识别和管理。
-d:后台运行volume。
-rm:当容器退出时自动删除volume。
-p:将volume映射到主机上的一个目录。
-o:设置volume的选项。
--label:设置volume的标签。
- list:列出所有的volume。
- create:创建新的volume。
- inspect:查看volume的详细信息。
- mount:查看volume的挂载信息。
- umount:卸载指定的volume。
- rm:删除指定的volume。
例子:`docker volume ls` 列出所有 Docker 数据卷。

20. docker network
- 含义:管理 Docker 的网络设置。
例子:`docker network ls` 列出所有 Docker 网络。

21. docker unpause
- 含义:恢复容器中的所有进程。
例子:`docker unpause container_id` 恢复指定的容器。

22. docker pause
- 含义:暂停容器中的所有进程。
例子:`docker pause container_id` 暂停指定的容器。

23. docker inspect
- 含义:查看容器的配置信息。
例子:`docker inspect container_id` 查看指定容器的详细配置信息。

2.docker container 命令

1. docker container attach  # 将本地标准输入、输出和错误流附加到正在运行的容器的终端。
2. docker container commit  # 根据容器的更改创建一个新的镜像。
3. docker container cp  # 在容器和本地文件系统之间复制文件/文件夹。
4. docker container create  # 创建一个新的容器。
5. docker container diff  # 检查容器文件系统上自容器创建以来的文件或目录更改。
6. docker container exec  # 在正在运行的容器内执行命令。
7. docker container export  # 将容器的文件系统导出为tar归档文件。
8. docker container inspect  # 显示一个或多个容器的详细信息,包括配置和状态。
9. docker container kill  # 杀死一个或多个正在运行的容器。
10. docker container logs  # 获取一个容器的日志输出。
11. docker container ls  # 列出所有容器。
12. docker container pause  # 暂停一个或多个容器中的所有进程。
13. docker container port  # 列出端口映射或容器的特定映射。
14. docker container prune  # 移走所有已停止的容器。
15. docker container rename  # 重命名容器。
16. docker container restart  # 重新启动一个或多个容器。
17. docker container rm  # 移除一个或多个容器。
18. docker container run  # 在新容器中运行命令。
19. docker container start  # 启动一个或多个已停止的容器。
20. docker container stats  # 显示容器资源使用统计数据的实时流。
21. docker container stop  # 停止一个或多个运行中的容器。
22. docker container top  # 显示容器正在运行的进程。