【Docker 学习笔记】Docker 命令大全

  • Post author:
  • Post category:其他





说明

docker cli 命令大全


docker -v

查看当前docker的版本信息


docker --help

可以查看当前docker支持的所有命令


docker COMMAND --help

可以查看子命令的帮助信息


说明:不同版本的docker,支持的命令及参数可能有不同

以下命令在如下版本测试:

C:\Users\Administrator>docker version
Client:
 Cloud integration: v1.0.35
 Version:           24.0.2
 API version:       1.43
 Go version:        go1.20.4
 Git commit:        cb74dfc
 Built:             Thu May 25 21:53:15 2023
 OS/Arch:           windows/amd64
 Context:           default

Server: Docker Desktop 4.21.1 (114176)
 Engine:
  Version:          24.0.2
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.4
  Git commit:       659604f
  Built:            Thu May 25 21:52:17 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.21
  GitCommit:        3dce8eb055cbb6872793272b4f20ed16117344f8
 runc:
  Version:          1.1.7
  GitCommit:        v1.1.7-0-g860f061
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0



容器生命周期管理

命令 功能 语法 常用

OPTIONS

run
从镜像创建一个容器并运行该容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

-d, --detach

以后台模式运行容器;


-p, --publish

指定端口映射,格式:

主机(宿主)端口:容器端口

;


-i, --interactive

以交互模式运行容器;


-t, --tty

为容器分配一个伪终端,通常与

-i

组合使用


-e, --env "env_var=value"

设置环境变量,设置多个环境变量使用多个

-e

参数实现;


--env-file envfile

从指定文件读入环境变量,文件每行是key=value,即代表一个环境变量;


--name string

给容器起个名字,如果没有指定,则随机分配一个名字;


-v, --volume

绑定一个卷,即 将主机目录与容器内的目录做映射,格式:

/hostdir:/containerdir



-w, --workdir

指定容器内的工作目录

start
启动一个或多个已停止的容器
docker start [OPTIONS] CONTAINER [CONTAINER...]

-a --attach

将容器的标准输出和标准错误连接到当前终端,使得可以在终端上查看容器的输出;


-i --interactive

将容器的标准输入连接到当前终端,可以与容器进行交互

stop
停止一个或多个运行中的容器
docker stop [OPTIONS] CONTAINER [CONTAINER...]

-s, --signal string

向容器中的进程发送信号,默认为

SIGTERM

;


-t, --time int

杀死容器中进程的超时时间,默认是10s

在正常情况下,Docker 会向容器中的进程发送 SIGTERM 信号,要求其正常退出。如果在

-t

参数指定的时间内,容器中的进程没有正常退出,则 Docker 会发送 SIGKILL 信号强制杀死容器中的进程

restart
重启一个或多个容器
docker restart [OPTIONS] CONTAINER [CONTAINER...]

-s, --signal string

向容器中的进程发送信号,默认为

SIGTERM

;


-t, --time int

杀死容器中进程的超时时间

在正常情况下,Docker 会向容器中的进程发送 SIGTERM 信号,要求其正常退出。如果在

-t

参数指定的时间内,容器中的进程没有正常退出,则 Docker 会发送 SIGKILL 信号强制杀死容器中的进程

kill
杀死一个或多个运行中的容器
docker kill [OPTIONS] CONTAINER [CONTAINER...]

-s, --signal string

发送给容器中进程的信号,不提供该参数,则默认发送

SIGKILL

信号,即强制终止正在运行的容器(可能会导致数据丢失或其他不良影响)

信号也可以用其编号代替,如:

SIGKILL 对应编号为 9

,则可使用

docker kill -s 9 container_name

,但是不建议用编号,因为不同操作系统编号可能不同



Linux

系统中,可以通过

info signal

查看所有信号说明和用途。

rm
删除一个或多个容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]

-f, --force

通过

SIGKILL

信号强制删除运行中的容器;


-l, --link

移除容器间的网络连接,而非容器本身;


-v, --volumes

删除与容器关联的卷

container prune
删除所有停止状态的容器
docker container prune [OPTIONS]

--filter filter

提供过滤条件,如

--filter "until=<timestamp>")

过滤出指定时间之前创建的容器;


-f, --force

强制删除,不再确认

pause
暂停容器中所有的进程
docker pause CONTAINER [CONTAINER...]


OPTIONS

unpause
恢复容器中所有的进程
docker unpause CONTAINER [CONTAINER...]


OPTIONS

create
创建一个新的容器但不启动它
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
参数用法同

docker run

,区别在于创建容器后是否运行

rename
重命名容器
docker rename CONTAINER NEW_NAME
注意:容器在重命名时不能处于运行状态,如果容器正在运行,需要先使用

docker stop

命令停止容器,然后再使用

docker rename

命令重命名容器

update
更新容器配置,如CPU、内存、重启策略等
docker update [OPTIONS] CONTAINER [CONTAINER...]

--cpu-shares=VALUE

为一个容器的 CPU 时间片配额相对权重,可以是浮点数,默认值为0


--cpus=VALUE

设置容器的 CPU 分配限制,默认值为0,表示没有限制;


--memory=BYTES

设置容器的内存限制,可以是数字或数字和单位的组合。例如,

--memory=2g



--memory=2000000000

都表示容器的内存限制为2GB;


--restart=VALUE

:设置容器退出后的重启策略。可选的值包括

no

(不重启)、

on-failure[:MAX-RETRIES]

(指定最大重试次数,失败后重新启动)、

always

(总是重启容器)等等

update命令只能修改容器的配置项,不能修改镜像的配置。如果需要修改镜像的配置,需要使用docker commit命令创建新的镜像


exec
在运行的容器中执行命令
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

-d, --detach

以后台模式运行容器;


-i, --interactive

以交互模式运行容器;


-t, --tty

为容器分配一个伪终端,通常与

-i

组合使用


-e, --env "env_var=value"

设置环境变量,设置多个环境变量使用多个

-e

参数实现;


--env-file envfile

从指定文件读入环境变量,文件每行是key=value,即代表一个环境变量;


-w, --workdir

指定容器内的工作目录



容器操作

命令 功能 语法 常用

OPTIONS

ps
查询已创建的容器
docker ps [OPTIONS]

-a, --all

查询所有容器,默认仅显示运行中的容器;


-f, --filter filter

使用指定的条件过滤查询内容,如

docker ps -f status=exited

查询所有停止状态的容器;


--format string

指定返回值的格式,如:table、json等等,默认 table;


-n, --last int

查询最近创建的n个容器(所有状态的);


-l, --latest

查询最近创建的1个容器(所有状态的);


-q, --quiet

仅显示容器IDs;


-s, --size

显示总文件大小

inspect
获取容器或镜像的底层信息
docker inspect [OPTIONS] NAME|ID [NAME|ID...]

-f, --format string

按指定的模板返回信息;


-s, --size

如果是容器,返回总文件大小;


--type

为指定类型返回json数据,如

docker inspect --type=container webapp

获取类型为容器,名为webapp的容器详细信息

top
获取运行中的容器进程信息
docker top CONTAINER [ps OPTIONS]

ps OPTIONS

表示可选的

ps

命令选项,用于指定要列出的进程的详细信息(注意这里的

ps

不是

docker ps

,而是Linux中的

ps

命令)


docker top mycontainer -eo pid,user,%cpu,%mem,command

指定显示进程的 PID、用户名、CPU 占用率、内存占用率和命令名称

attach
使用户进入正在运行的容器终端
docker attach [OPTIONS] CONTAINER

--detach-keys

指定从容器中分离的键序列,默认为

ctrl-c

,如

docker attach --detach-keys "ctrl-q" mycontainer

,则

ctrl-q

组合键代替默认的

ctrl-c

来终止mycontainer容器的终端连接;


--no-stdin

不将标准输入流输入到终端中


--sig-proxy

将附加的信号发送到容器的进程(默认为true)

events
从服务器获取实时事件
docker events [OPTIONS]

-f, --filter filter

使用指定条件对查询结果进行过滤


--since string

查询指定日期或时间后产生的事件,string为秒级的时间戳或者”2023-08-05″类似格式的日期


--until string

查询指定日期或时间前产生的事件,string为秒级的时间戳或者”2023-08-05″类似格式的日期

logs
获取同期日志信息
docker logs [OPTIONS] CONTAINER

-f, --follow

跟踪日志输出;


--since string

显示指定时间或日期之后的日志 (e.g. “2023-08-04”) or relative (e.g. “42m” for 42 minutes)


-n, --tail int

显示最近n条日志记录(默认是all);


-t, --timestamps

显示时间戳信息;


--until string

显示指定时间或日期之前的日志 (e.g. “2023-08-04T20:36:55.997861800Z”) or relative (e.g. “1h” for 1 hour)

注意:logs仅能显示标准输出、标准错误日志信息

wait
阻塞容器直到容器停止运行,然后返回退出代码
docker wait CONTAINER [CONTAINER...]


OPTIONS

export
将文件系统作为一个tar归档文件导出到STDOUT
docker export [OPTIONS] CONTAINER

-o, --output string

将输出写到文件,代替STDOUT

port
查看容器的端口映射信息
docker port CONTAINER [PRIVATE_PORT[/PROTO]]
输出的端口映射信息格式:

<port>/<protocol> -> <host>:<port>



<port>

是容器内部的端口号,

<protocol>

是协议类型(如 tcp 或 udp),

<host>

是主机的 IP 地址,

<port>

是主机上映射的端口号

如果想要查看本地主机上的端口和容器内部的端口之间的映射关系,可以使用

docker ps

命令,方法如下:


$ docker ps -a --format "{

{.ID}}\t{

{.Names}}\t{

{.Ports}}"

stats
显示容器资源的使用情况,包括:CPU、内存、网络 I/O 等
docker stats [OPTIONS] [CONTAINER...]

-a, --all

显示所有容器的资源使用情况,无该参数,则仅显示运行状态的;


--format string

指定返回值的模板文件,如table(默认)、json等等;


--no-stream

仅展示当前资源使用情况,不实时更新;


--no-trunc

不截断输出


输出详情介绍:



CONTAINER ID



NAME

: 容器 ID 与名称;


CPU %



MEM %

: 容器使用的 CPU 和内存的百分比;


MEM USAGE

/

LIMIT

: 容器正在使用的总内存,以及允许使用的内存总量;


NET I/O

: 容器通过其网络接口发送和接收的数据量;


BLOCK I/O

: 容器从主机上的块设备读取和写入的数据量;


PIDs

: 容器创建的进程或线程数



容器rootfs命令

命令 功能 语法 常用

OPTIONS

commit
用于将容器的当前状态(文件系统、配置等)保存为一个新的镜像
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

-a, --author

:指定新镜像的作者信息;


-c, --change

:在新镜像上执行指定的 Dockerfile 命令;


-m, --message

:在新镜像上添加指定的提交信息;


-p, --pause

:在保存容器状态时暂停容器(默认是true)


CONTAINER

是指要保存状态的容器的 ID 或者名称


REPOSITORY



TAG

是新镜像的仓库名和标签

cp
用于容器和主机之间的文件或目录数据拷贝
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH | -



docker cp [OPTIONS] SRC_PATH | - CONTAINER:DEST_PATH
使用’-‘作为源文件从stdin中读取tar存档文件,并将其解压缩到容器中的目录目标

使用’-‘作为目标,流式传输文件的tar存档容器源到标准输出


-a, --archive

在复制文件时保留文件的元数据,例如文件权限、所有者、组、时间戳等;


-L, --follow-link

在复制文件时跟踪符号链接,并将其内容复制到目标位置

如果不使用

-L

参数,则在复制文件时会忽略符号链接,复制的是该符号链接指向的原始文件;


-q, --quiet

拷贝过程中禁止输出进度。如果没有附加终端,则自动抑制进度输出

diff
检查容器内文件或目录的更改情况
docker diff CONTAINER


OPTIONS


该命令可以比较容器启动后对文件系统执行的更改与初始镜像的文件系统之间的差异



镜像仓库

命令 功能 语法 常用

OPTIONS

login
登陆到一个Docker镜像仓库
docker login [OPTIONS] [SERVER]

-p, --password string

用户密码


--password-stdin

从标准输入获取密码


-u, --username string

用户名


SERVER

如果不指定,默认为Docker hub 官方仓库

logout
登出一个Docker镜像仓库
docker logout [SERVER]

SERVER

如果不指定,默认为Docker hub 官方仓库

pull
从镜像仓库中拉取或者更新指定镜像 `docker pull [OPTIONS] NAME[:TAG @DIGEST]`

push
上传镜像到镜像仓库
docker push [OPTIONS] NAME[:TAG]

-a, --all-tags

上传指定镜像的所有tag版本的镜像


--disable-content-trust

跳过镜像数字签名校验,默认是true


-q, --quiet

简化镜像上传过程中输出信息;

search
搜索

Docker Hub

仓库镜像

docker search [OPTIONS] TERM

-f, --filter filter

对查询结果进行过滤

如:


-f stars=100

表示过滤出stars数大于等于100的镜像;


-f is-official=true

表示过滤出官方的镜像;


-f is-automated=true

表示过滤出自动构建的镜像;


--format string

按模板输出查询结果


--limit int

限制输出结果数量


--no-trunc

显示完整信息



本地镜像管理

命令 功能 语法 常用

OPTIONS

images
列出本地镜像
docker images [OPTIONS] [REPOSITORY[:TAG]]

-a, --all

列出所有镜像(含中间映像层,默认情况下,过滤掉中间映像层)


--digests

显示镜像的digests信息;


-f, --filter filter

使用指定条件对结果进行过滤显示;如:


-f "reference=<name>"

:查找具有指定镜像名称

<name>

的镜像;


--format string

按指定模板显示输出信息;


--no-trunc

输出信息不截断;


-q, --quiet

仅显示镜像IDs

rmi
删除本地镜像
docker rmi [OPTIONS] IMAGE [IMAGE...]

-f, --force

强制删除;


--no-prune

不移除该镜像的过程镜像,默认移除;

image prune
删除所有未使用的镜像
docker image prune [OPTIONS]

-a, --all

删除所有未使用的镜像,而不仅是挂起状态的


--filter filter

使用指定条件过滤出要删除的镜像,如

--filter until=<timestamp>

删除指定时间之前创建的镜像


-f, --force

强制删除,不再确认

tag
给镜像打tag标签
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
类似与git的tag功能


TAG

如果不指定,默认为latest;


docker tag nginx:latest my-nginx:latest



docker tag nginx:latest my-nginx:v1.0




nginx:latest

镜像标记两个新的标签:

my-nginx:latest



my-nginx:v1.0

build
构建镜像
docker buildx build [OPTIONS] PATH | URL | -

-f, --file string

指定构建镜像使用的dockerfile文件,这个文件可以是本地的或者URL获得的或者STDIN标准输入获得的;


--network string

设置镜像使用的网络模式,默认为bridge;


--no-cache

忽略构建缓存;


--pull

构建镜像时总是尝试去拉取最新版本的基础镜像;


-q, --quiet

简化构建过程的输出信息,构建成功后返回镜像id;


-t, --tag stringArray

给生成的镜像设置名称和tag标签,格式为

<name>:<tag>

,tag省略,则默认为latest

history
查看镜像历史
docker history [OPTIONS] IMAGE

-format string

指定输出内容的格式;


-H, --human

以可读的格式打印镜像大小和日期,默认为true;


--no-trunc

不截断输出信息;


-q, --quiet

仅输出镜像IDs

save
将指定镜像保存为tar归档
docker save [OPTIONS] IMAGE [IMAGE...]

-o, --output string

指定归档信息保存的文件,默认是输出到

STDOUT

load
从tar归档或STDIN导入镜像
docker load [OPTIONS]

-i, --input string

指定tar归档文件进行导入,默认是从

STDIN

导入;


-q, --quiet

简化导入过程中的输出信息

import
用于将文件系统打包成镜像,并导入到 Docker 镜像库中
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
将本地文件系统、tar 文件以及远程 URL 路径中的文件系统、STDIN等导入到 Docker 镜像库中,生成新的镜像


-c, --change list

为导入的镜像设置dockerfile中的指令,如

-c CMD ["echo", "hello world!"]




-m, --message string

为创建的镜像,提交说明信息;


--platform string

用于指定构建镜像的目标平台



Docker 信息

命令 功能 语法 常用

OPTIONS

info
查看docker客户端和服务端信息
docker info [OPTIONS]

-f, --format string

按指定模板显示输出信息;

默认为pretty格式,还支持json格式、Go template格式

version
查看docker版本信息
docker version [flags]

-f, --format string

按指定模板显示输出信息;

默认为pretty格式,还支持json格式


--kubeconfig string

Kubernetes 配置文件信息



最后

由于个人能力有限,以上命令总结难免有理解或翻译的错误,更详细、更准确的,还请参考官方帮助文档:


Use the Docker command line | Docker Documentation



版权声明:本文为B11050729原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。