命令
帮助启动命令
1、启动
systemctl start docker
2、停止
systemctl stop docker
3、重启
systemctl restart docker
4、查看状态
systemctl status docker
5、开机自启动
systemctl enable docker
6、该命令显示关于 Docker 安装的系统范围的信息
docker info
(1)显示的信息包括内核版本、容器、镜像数量
(2)显示的镜像数量是唯一的镜像数量,同一个镜像在不同的名字下被标记,只计算一次
7、查看全局帮助文档
docker help
8、查看命令帮助文档
docker 命令 --help
管理镜像
docker image COMMAND
1、从 Docker 文件中建立一个镜像
docker image build
2、显示一个镜像的历史信息
docker image history
3、从 tarball 中导入内容,创建一个文件系统镜像
docker image import
4、显示一个或多个镜像的详细信息
docker image inspect
5、从 tar 档案或 STDIN 中加载一个镜像
docker image load
6、列出镜像
docker image ls
7、删除未使用的镜像
docker image prune
8、从注册表中拉出一个镜像或一个存储库
docker image pull
9、将一个镜像或版本库推送到注册中心
docker image push
10、删除一个或多个镜像
docker image rm
11、保存一个或多个镜像到一个tar归档文件(默认情况下流向 STDOUT)
docker image save
12、创建一个指向 SOURCE_IMAGE 的标签 TARGET_IMAGE
docker image tag
列出本地主机所有镜像
docker images [OPTIONS] [REPOSITORY[:TAG]]
1、描述
(1)默认的 docker images 将显示所有的顶级镜像,它们的存储库和标签,以及它们的大小
(2)Docker 镜像有一些中间层,这些中间层可以增加重用性,减少磁盘的使用,并通过允许每个步骤被缓存来加快 docker 构建的速度,这些中间层默认是不显示的
(3)SIZE 是指该镜像及其所有父镜像所占用的累积空间,这也是在 docker save 镜像时创建的 Tar 文件内容所占用的磁盘空间
(4)如果一个镜像有多个资源库名称或标签,它将被列出不止一次。这个单一的镜像(可通过其匹配的 IMAGE ID 识别)只用了一次列出的 SIZE
2、OPTIONS
(1)--all、-a:显示所有镜像(默认隐藏中间镜像)
(2)--digests:显示摘要
(3)--filter、-f:根据提供的条件过滤输出
(4)--format:使用 Go 模板打印镜像
(5)--no-trunc:不截断输出
(6)--quiet、-q:只显示镜像 ID
3、[REPOSITORY[:TAG]]
(1)将列表限制在与该参数相匹配的镜像上
(2)如果指定 REPOSITORY,但没有指定 TAG,那么 docker images 命令就会列出指定存储库中的所有镜像
(3)REPOSITORY[:TAG]] 值必须是完全匹配,例如:docker images jav 并不匹配镜像 java
(4)如果同时提供 REPOSITORY、TAG,则只列出与该仓库和 TAG 匹配的镜像
(5)如果没有任何东西与 REPOSITORY[:TAG] 相匹配,则该列表为空
4、虚悬镜像(dangling image)
(1)仓库名、标签为 <none> 的镜像
(2)查询显示虚悬镜像
docker images -f dangling=true
(3)删除虚悬镜像
docker rmi $(docker images -q -f dangling=true)
搜索 Docker Hub 的镜像
docker search [OPTIONS] TERM
1、OPTIONS
(1)--filter、-f:根据提供的条件过滤输出
(2)--format:使用 Go 模板进行漂亮的打印搜索
(3)--limit:搜索结果的最大数量,这个值可以在 1 到 100 之间,默认值 25
(4)--no-trunc:不截断输出结果
2、--filter、-f 的格式是一个 key=value
(1)如果有一个以上的过滤器,那么就传递多个标志
(2)stars:int 类型,镜像上的星星数量)
(3)is-automated:boolean 类型,true / false,该镜像是否是自动构建
(4)is-official:boolean 类型,true / false,该镜像是否为官方镜像
从注册表中拉出一个镜像或一个存储库
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
1、描述
(1)大多数镜像将在 Docker Hub 注册表的基础镜像之上创建
(2)Docker Hub 包含许多预建的镜像,可以提取并尝试,而不需要定义和配置镜像
(3)要下载一个特定的镜像,或一组镜像(即一个存储库),请使用 docker pull
2、OPTIONS
(1)--all-tags、-a:下载版本库中所有带标签的镜像
(2)--disable-content-trust:跳过镜像验证,默认 true
(3)--platform:如果服务器是多平台的,则设置平台
(4)--quiet、-q:抑制冗长的输出
3、如果没有提供 TAG,默认使用 :latest
4、Docker 会在拉取完成后打印出镜像的摘要,当推送到注册表时,Docker 也会打印出镜像的摘要,在提取镜像时,@DIGEST 可以取代 :TAG
管理 Docker
docker system COMMAND
1、显示 docker 磁盘使用情况
docker system df
2、从服务器获取实时事件
docker system events
3、显示全系统信息
docker system info
4、删除未使用的数据
docker system prune
删除一个或多个镜像
docker rmi [OPTIONS] IMAGE [IMAGE...]
1、描述
(1)从主机节点上删除(和取消标签)一个或多个镜像,如果一个镜像有多个标签,以标签为参数使用此命令只删除标签,如果标签是镜像的唯一标签,则镜像和标签都被删除
(2)这不会从注册表中删除镜像,除非使用 -f 选项,否则不能删除一个正在运行的容器的镜像
2、OPTIONS
(1)--force、-f:强制删除图像
(2)--no-prune:不删除未标记的母本
3、可以用短或长的 ID、标签、摘要来删除一个镜像
(1)如果一个镜像有一个或多个标签引用它,必须在镜像被删除之前删除所有的标签
(2)当一个镜像通过标签被删除时,摘要引用会被自动删除
(3)如果使用 -f 并指定镜像的短或长 ID,那么这个命令将取消标记并删除所有符合指定 ID 的镜像
在一个新的容器中运行一个命令
docker run [OPTIONS] IMAGE [COMMAND] [ARGUMENT...]
1、描述
(1)docker run 命令首先在指定的镜像上创建一个可写的容器层,然后用指定的命令启动它
(2)即 docker run 相当于 API 中的 /containers/create 然后 /containers/(id)/start,使用 docker start 可以重新启动一个已经停止的容器,并保持其之前的所有变化不变
(3)docker run 命令可以与 docker commit 结合使用,以改变容器所运行的命令
2、OPTIONS
(1)--name:为容器指定一个名称
(2)--detach、-d:在后台运行容器并打印容器 ID,即启动守护式容器(后台运行)
(3)--interactive、--i:即使没有连接,也保持 STDIN 开放,以交互模式运行容器,通常与 -t 同时使用
(4)--tty、-t:分配一个假的 TTY,为容器重新分配一个伪输入终端,通常与 -i 同时使用,即启动交互式容器(前台有伪终端,等待交互)
(5)--publish、-p:指定端口映射,格式:主机端口:容器端口
(6)--publish-all、-P:随机端口映射,容器内部端口随机映射到主机的端口
(7)--privileged:给予该容器扩展权限
(8)--volume、-v:绑定挂载一个卷
(9)--volumes-from:从指定的容器中挂载卷
3、Docker 容器后台运行,必须有一个前台进程
(1)容器运行的命令如果不是一直挂起的命令,如:top、tail,则会自动退出的
(2)docker 机制:以后台进程模式运行,则导致 docker 前台没有运行的应用,容器后台启动后,会立即自杀
(3)解决:将要运行的程序以前台进程的形式运行,即 -it
列出当前正在运行的所有容器
docker ps [OPTIONS]
1、OPTIONS
(1)--all、-a:显示所有的容器(默认只显示正在运行的容器)
(2)--filter、--f:根据提供的条件过滤输出
(3)--format:使用 Go 模板打印容器
(4)--last、-n:显示最后创建的 n 个容器(包括所有状态),默认值为 -1
(5)--latest、-l:显示最新创建的容器(包括所有状态)
(6)--no-trunc:不截断输出
(7)--quiet、-q:只显示容器的 ID
(8)--size、-s:显示总的文件大小
退出容器
1、exit:容器停止
(1)docker attach:直接进入容器启动命令的终端,不会启动新进程,exit 退出导致容器停止
(2)docker exec:在容器中打开新终端,并且可以启动新进程,exit 退出不会导致容器停止
2、Ctrl +P + Q:容器不停止
启动一个或多个停止的容器
docker start [OPTIONS] CONTAINER [CONTAINER...]
1、OPTIONS
(1)--attach、-a:附加 STDOUT / STDERR 和转发信号
(2)--checkpoint:从这个检查点恢复
(3)--checkpoint-dir:使用一个自定义的检查点存储目录
(4)--detach-keys:覆盖脱离容器的 key 序列
(5)--interactive、-i:附加容器的 STDIN
重新启动一个或多个容器
docker restart [OPTIONS] CONTAINER [CONTAINER...]
1、OPTIONS
(1)-time、-t:在杀死容器之前等待停止的秒数,默认值为 10
停止一个或多个正在运行的容器
docker stop [OPTIONS] CONTAINER [CONTAINER...]
1、说明
(1)容器内的主进程会收到 SIGTERM,在一个宽限期后,会收到 SIGKILL
(2)第一个信号可以通过容器的 Dockerfile 中的 STOPSIGNAL 指令,或者 docker run 中的 -stop-signal 选项来改变
2、OPTIONS
(1)--time、--t:在杀死它之前等待停止的秒数,默认值为 10
杀死一个或多个正在运行的容器
docker kill [OPTIONS] CONTAINER [CONTAINER...]
1、说明
(1)docker kill 子命令可以强制停止一个或多个容器
(2)容器内的主进程会被发送 SIGKILL信号(默认),或者用 --signal 选项指定信号,可以通过 ID、ID-prefix 或 name 来引用一个容器
(3)--signal(或 -s)标志设置了被发送到容器的系统调用信号,这个信号可以是格式为 SIG<NAME> 的信号名称,例如:SIGINT,也可以是一个无符号的数字,与内核的系统调用表中的一个位置相匹配,例如:2
(4)虽然默认的 SIGKILL 信号将终止容器,但通过 --signal 设置的信号可能是非终端的,这取决于容器的主进程,例如:在大多数情况下,SIGHUP 信号将是非终端的,容器在收到信号后将继续运行
2、OPTIONS
(1)--signal、--s:发送给容器的信号,默认值为 KILL
移除一个或多个容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]
1、OPTIONS
(1)--force、-f:强制删除一个正在运行的容器(使用 SIGKILL)
(2)--link、-l:移除指定的链接
(3)--volumes、-v:删除与容器相关的匿名卷
获取一个容器的日志
docker logs [OPTIONS] CONTAINER
1、描述
(1)docker logs 命令批量检索执行时存在的日志
(2)docker logs --follow 命令将继续从容器的 STDOUT 和 STDERR 流出新的输出
(3)向 --tail 传递一个负数或非整数是无效的,在这种情况下,值被设置为 all
(4)docker logs --timestamps 命令将为每个日志条目添加一个 RFC3339Nano 时间戳,例如:2014-09-16T06:17:46.000000000Z,为了确保时间戳是一致的,必要时,时间戳的纳秒部分将被填充为零
(5)docker logs --details 命令将添加额外的属性,如:环境变量、标签,在创建容器时提供 -log-opt
(6)--since 选项只显示给定日期后生成的容器日志,可以将日期指定为 RFC3339 日期、UNIX 时间戳、Go 持续时间字符串(例如:1m30s、3h)
(7)可以将 --since 选项与 --follow 或 --tail 选项中的一个或两个结合起来
2、OPTIONS
(1)--details:显示提供给日志的额外细节
(2)--follow、-f:关注日志输出
(3)--since:显示自时间戳(例如:2013-01-02T13:23:37Z)或相对时间(例如:42m 表示 42 分钟)以来的日志
(4)--tail、-n:从日志末尾开始显示的行数,默认值为 all
(5)--timestamps、-t:显示时间戳
(6)--until:显示时间戳(例如,2013-01-02T13:23:37Z)或相对时间(例如:42m 表示 42 分钟)之前的日志
显示一个容器的运行进程
docker top CONTAINER [ps OPTIONS]
返回 Docker 对象的底层信息
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
1、说明
(1)docker inspect 提供了关于 Docker 控制的结构体的详细信息
(2)默认情况下,docker inspect 会以 JSON 数组的形式呈现结果
(3)--type container | image | node | network | secret | service | volume | task | plugin
(4)--size、-s 选项在 docker inspect 输出中增加了两个额外的字段,这个选项只对容器起作用,容器不一定要在运行,它也适用于停止的容器
2、OPTIONS
(1)--format、-f:使用给定的 Go 模板格式化输出
(2)--size、-s:如果类型是容器,显示总的文件大小
(3)--type:返回指定类型的 JSON
在一个正在运行的容器中运行一个命令
docker exec [OPTIONS] CONTAINER COMMAND [ARGUMENT...]
1、说明
(1)docker exec 命令在一个正在运行的容器中运行一个新的命令
(2)使用 docker exec 启动的命令只在容器的主进程(PID 1)运行时运行,如果容器被重新启动,它也不会被重新启动
(3)COMMAND 在容器的默认目录下运行,如果底层镜像在其 Dockerfile 中用 WORKDIR 指令指定了一个自定义目录,这个目录将被替代使用
(4)COMMAND 必须是一个可执行文件,链式或带引号的命令不起作用,例如:docker exec -it my_container sh -c "echo a && echo b" 可以工作,但 docker exec -it my_container "echo a && echo b" 就不行
2、OPTIONS
(1)--detach、-d:分离模式,在后台运行命令
(2)--detach-keys:覆盖脱离容器的 key 序列
(3)--env、-e:设置环境变量
(4)--env-file:读取环境变量的文件
(5)--interactive、-i:即使没有连接,也要保持 STDIN 开放
(6)--privileged:给予命令扩展权限
(7)--tty、-t:分配一个伪 TTY
(8)--user、-u:用户名或 UID(格式:<name|uid>[:<group|gid>])
(9)--workdir、-w:容器内的工作目录
将本地标准输入、输出、错误流附加到一个正在运行的容器上
docker attach [OPTIONS] CONTAINER
1、说明
(1)使用 docker attach 将终端的标准输入、输出、错误(或三者的任何组合)附加到一个正在运行的容器上,使用该容器的 ID 或名称
(2)这允许查看其正在进行的输出,或以交互方式控制它,就像命令直接在终端中运行一样
2、OPTIONS
(1)--detach-keys:覆盖脱离容器的 key 序列
(2)--no-stdin:不连接 STDIN
(3)--sig-proxy:将所有收到的信号代理给进程,默认值为 true
在一个容器和本地文件系统之间复制文件 / 文件夹
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
1、说明
(1)docker cp 工具将 SRC_PATH 的内容复制到 DEST_PATH 中,可以从容器的文件系统复制到本地机器上,或者相反,从本地文件系统复制到容器上
(2)如果在 SRC_PATH 或 DEST_PATH 中指定了 -,也可以从 STDIN 或 STDOUT 流式传输一个 tar 压缩文件
(3)CONTAINER 可以是一个运行中的或停止的容器
(4)SRC_PATH 或 DEST_PATH 可以是一个文件或目录
(5)docker cp 命令假定容器的路径是相对于容器的 /(根)目录的,这意味着提供最初的正斜杠是可选的;命令认为 compassionate_darwin:/tmp/foo/myfile.txt 和 compassionate_darwin:tmp/foo/myfile.txt 是一样的
(6)本地机器的路径可以是一个绝对值或相对值,该命令将本地机器的相对路径解释为相对于运行 docker cp 的当前工作目录
2、OPTIONS
(1)--archive、-a:存档模式(复制所有 uid / gid 信息)
(2)--follow-link、-L:始终跟随 SRC_PATH 中的符号链接
将一个容器的文件系统导出为一个 tar 归档文件
docker export [OPTIONS] CONTAINER
1、说明
(1)docker export 命令不会导出与容器相关的卷的内容,如果卷被挂载在容器中的一个现有目录之上,docker export 将导出底层目录的内容,而不是卷的内容
2、OPTIONS
(1)--output、-o:写入一个文件,代替 STDOUT
从 tarball 中导入内容,创建一个文件系统镜像
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
1、说明
(1)可以指定一个 URL 或 -(破折号)来直接从 STDIN 获取数据
(2)URL 可以指向一个包含文件系统的归档文件(.tar、.tar.gz、.tgz、.bzip、.tar.xz、.txz)或指向 Docker 主机上的单个文件
(3)如果指定一个归档文件,Docker 会在容器中相对于 /(根)进行解密
(4)如果指定一个单独的文件,必须指定主机内的完整路径。要从远程位置导入,指定一个以 http:// 或 https:// 协议开头的 URI
(5)--change 选项将 Dockerfile 指令应用到所创建的镜像上,支持的 Dockerfile 指令:cmd | entrypoint | env | expose | onbuild | user | volume | workdir
2、OPTIONS
(1)--change、-c:对创建的镜像应用 Dockerfile 指令
(2)--message、-m:设置导入镜像的提交信息
(3)--platform:如果服务器是多平台的,则设置平台
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战