Docker 命令速通指南:从入门到封神的 100 + 必学指令,一篇搞定容器全操作

还在为记不住 Docker 命令抓狂?启动容器时敲错参数、清理镜像时误删重要文件、排查日志时对着终端发呆...... 这些痛,每个 Docker 初学者都懂。

但其实,掌握核心命令就能让容器操作如丝般顺滑。本文精选 100 + 高频指令,从镜像拉取到容器启停,从数据卷挂载到网络配置,附实例解析和避坑指南。无论你是刚上手的新手,还是想提升效率的开发者,花 10 分钟读完,就能告别 "查文档 - 试命令 - 报错重来" 的循环,让 Docker 真正成为你的效率利器。

一.容器生命周期管理

1 、run------创建并启动容器

语法:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

options\]:可选参数,配置容器各种特性 \[COMMAND\]: 用于指定容器启动后要执行的命令 \[ARG\]:可选参数,传递给COMMAND的参数 **常用参数说明:** -d:后台运行容器并返回容器ID(前台运行的话会占用当前窗口终端,后台不占用)。 -it:交互式运行容器。 --name:给容器指定一个名称 -p:端口映射,\<主机\>\<容器\> -v:挂载卷,D:/docker-test:/usr/cat/one.html --rm:删除停止后的容器 -e:设置环境变量 --network:指定容器的网络模式 --restart:容器重启 -u:指定用户(这个一般是推送到仓库的时候用到) **实例:** 1、基本使用 docker run ubuntu 拉取ubuntu镜像并在前台启动一个容器 2、后台运行容器 docker run -d ubuntu 在后台运行ubuntu容器并返回容器ID 3、交互式运行并分配终端 Docker run -it ubuntu /bin/bash 以交互模式运行ubuntu容器,并启动一个Bash shell 4、指定容器名称 Docker run ---name my-custom ubuntu 运行一个ubuntu容器,并将其命名 5、端口映射 Docker run -p 8080:80 nginx 将主机的8080端口映射到容器的80端口,运行nginx 6、挂载卷 Docker run -v /host/data:/container/data ubuntu 将主机的/host/data目录挂载到容器内的/container/data目录,如果是windows系统,主机用路径host只适用于mac和linux 7、设置环境变量 Docker run -e MY_ENV_VAR=my-value ubuntu 设置环境变量MY_ENV_VAR的值为my-value,运行ubuntu,可以这样理解环境变量相当于便利贴,每次启动可以赋不一样的值 8、使用网络模式 Docker run --network host nginx 使用主机的网络模式运行nginx容器 9、指定重启策略 Docker run ---restart always nginx 设置容器的重启策略为always,只要容器不是被手动停止的(比如用 docker stop),无论它因为什么原因停止运行(比如程序崩溃等),Docker 都会自动把它重新启动。 10、指定用户 Docker run --u user123 ubuntu 以user123用户运行ubuntu容器 11、组合多个选项 Docker run -d -p 8080:80 -v /host/data:/data ---name webserver nginx 后台运行一个名为webserver的nginx容器,将主机8080端口映射到80端口,并将主机的data目录挂载到容器的data目录 ### **2** **、start/stop/restart------启动/停止/重启容器** **语法**:docker start \[OPTIONS\] CONTAINER \[CONTAINER...

参数

-a:附加到容器的标准输入输出流

-i:附加并保持标准输入打开

举个现实中的例子:

想象容器是一个装着程序的 "黑盒子":

当你用 docker start my_container 启动时,盒子里的程序在运行,但你看不到它的任何输出,也没法直接和它互动

当你用 docker start -a my_container 启动时,相当于在盒子上开了一个窗口,你能看到里面程序打印的内容(标准输出),也能通过这个窗口输入命令(标准输入)

语法:docker stop [OPTIONS] CONTAINER [CONTAINER...]

参数

-t,--time:停止容器之前等待的秒数,默认是10s

语法:docker restart [OPTIONS] CONTAINER [CONTAINER...]

参数

-t,--time:重启容器之前等待的秒数,默认是10s

基本使用

1、启动一个容器

Docker start my-custom

2、停止一个容器

Docker stop my-custom

3、重启一个容器

Docker restart my-custom

4、指定等待时间停止容器

Docker stop -t 30 my-custom

等待30秒后停止容器

5、指定等待时间重启容器

Docker restart -t 15 my-custom

等待15秒后重启容器

3 、kill------立刻终止正在运行的容器

语法:docker kill [OPTIONS] CONTAINER [CONTAINER...]

参数:

-s,--signal:发送给容器的信号(默认SIGKLL)

常用信号

SIGKILL:强制终止进程(强行断电)

SIGTERM:请求进程终止(正常关机)

SIGINT:发送中断信号,通常表示用户请求终止

SIGHUP:挂起信号,通常表示终端断开

基本使用:

1、立即终止一个容器

Docker kill my-custom

立即终止名称为my-custom的容器

2、发送自定义信号

Docker kill -s SIGTERM my-custom

4 、rm------删除已经停止的容器

语法:docker rm [OPTIONS] CONTAINER [CONTAINER...]

参数

-f,--force:强制删除正在运行的容器(使用SIGKILL)

-l,--link:删除指定的连接,而不是容器本身

-v,--volumes:删除容器挂载的卷

基本使用

1、删除单个容器

Docker rm my-custom

2、删除多个容器

Docker container prune / docker rm $(docker ps -a -q)

使用此命令删除所有已停止的容器

5 、pause/unpause------暂停/恢复容器中的所有进程

语法:docker pause CONTAINER [CONTAINER...]

语法:docker unpause CONTAINER [CONTAINER...]

基本使用

1、暂停一个容器

Docker pause my-custom

暂停名称为my-custom的容器的所有进程

2、恢复一个容器

Docker unpause my-custom

恢复名称为my-custom的容器中的所有进度

6 、create------创建新容器,但不启动

**语法:**docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

参数:同run如上

基本使用

1、创建一个容器

Docker create ubuntu

根据ubuntu镜像创建一个容器,但不会启动它

7 、exec------在容器中执行新命令

语法:docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

参数

-d,--detach:在后台运行

--detach-keys:覆盖分离容器的健序列

--env-file:从文件中读取环境变量

-I,--interactive:保持标准输入打开

--privileged:给这个命令额外的权限

--user,-u:指定用户的身份运行命令

--workdir,-w:指定命令的工作目录

基本使用:

1、在容器内运行命令

Docker exec my-custom ls /app

在运行的容器my-custom中运行ls /app命令,列出/app的目录内容(让容器帮忙跑命令,跑完就退出来了)

2、以交互模式运行命令

Docker exec -it my-custom /bin/bash

在运行中的 my-custom 容器内启动一个交互式的 Bash shell(后续就在容器里面了,没有退出来)

3、如果是已运行exec(必须带-it)了

Touch /app/newfile.txt

说明已经在容器了,直接运行操作命令就可以

8 、rename------重命名容器

语法:docker rename <当前容器名称或ID> <新容器名称>

基本使用

1、重命名容器

Docker rename my-custom master

将一个正在运行的容器my-custom重命名为master

2、使用容器ID重命名

Docker rename 123abc456 master

若不知道容器的名称,但知道ID,可以使用容器的ID来重命名

3、检查是否重名

Docker rename my-custom master

若尝试重命名的名称被其它容器占用,docker会返回错误

二.容器操作

1 、ps------列出docker容器

语法:docker ps [OPTIONS]

参数

-a,--all:显示所有容器,包括停止的容器

-q,--quiet:只显示容器ID

-l,--latest:显示最近创建的一个容器,包括所有状态

-n:显示最近创建的n个容器,包括所有状态

--no-trunc:不截断输出(在docker命令输出信息时,完整显示所有内容,不省略或缩短过长的部分)

-s,--size:显示容器的大小

-f,--filter:根据条件过滤显示的容器

--format:格式化输出

基本使用

1、列出所有正在运行的容器

Docker ps

输出详情介绍:

CONTAINER ID: 容器 ID。

IMAGE: 使用的镜像。

COMMAND: 启动容器时运行的命令。

CREATED: 容器的创建时间。

STATUS: 容器状态。

状态有7种:

  • created(已创建)
  • restarting(重启中)
  • running(运行中)
  • removing(迁移中)
  • paused(暂停)
  • exited(停止)
  • dead(死亡)

PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。

NAMES: 自动分配的容器名称。

2、列出所有容器,包括停止的容器

Docker ps -a

3、只显示容器ID

Docker ps -q

4、显示最近创建的一个容器

Docker ps -l

5、显示最近创建的n个容器

Docker ps -n 3

显示最近创建的3个容器,包括所有状态

6、显示容器大小

Docker ps -s

7、根据条件过滤容器

Docker ps -f "status-exited"

显示状态为exited的容器

Docker ps -f "name=my-custom"

显示名称包含my-custom的容器

8、格式化输出

Docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}"

以表格形式显示容器的ID,名称和状态

常见过滤器:

Status:容器状态、name:容器名称、id:容器ID、label:容器标签、ancestor:容器镜像

2 、inspect------获取docker对象(容器,镜像,卷,网络等)的详细信息

语法:docker inspect [OPTIONS] NAME|ID [NAME|ID...]

参数

-f,--format:使用go模板语法格式化输出

--type:返回指定类型的对象信息

基本使用

1、检查容器

Docker inspect my-custom

2、检查镜像

Docker inspect my-image

3、检查卷

Docker inspect my-volume

4、检查网络

Docker inspect my-network

5、格式化输出

Docker inspect --format '{{.State.Running}}' my-custom

返回my-custom容器的运行状态,格式化输出为布尔值

6、检查多个对象

Docker inspect my-custom my-image

返my-custom和my-image的详细信息

3 、top------显示指定容器中的正在运行的进程

语法:docker top [OPTIONS] CONTAINER [ps OPTIONS]

基本使用

1、查看容器内的进程

Docker top my-custom

显示容器my-custom中所有正在运行的进程

2、使用自定义ps选项

Docker top my-custom -o pid,comm

显示容器my-custom中所有正在运行的进程,并只显示pid和com列

4 、attach------允许用户附加到正在运行的容器并与其交互

语法:docker attach [OPTIONS] CONTAINER

参数

--detach-keys:设置一个在容器中分离的健序列

--no-stdin:不附加标准输入

--sig-proxy:当键盘中断时,将信号代理到容器(默认true)

基本使用

1、附加到正在运行的容器

Docker attach my-custom

附加到名为 my-customr 的容器,用户可以直接与容器的标准输入、输出和错误输出交互。

2、附加到容器并禁用标准输入

Docker attach ---no-stdin my-custom

附加到 my-custom 容器,但不附加标准输入。

3、设置分离健序列

docker attach --detach-keys="ctrl-c" my_container

附加到 my-custom 容器,并设置 ctrl-c 为分离键序列。

监控 / 干预容器主进程(如看主进程日志、操作主进程的交互式命令行)→ 用 docker attach(注意退出方式,避免停容器);

在容器里额外执行命令 / 开终端(如装软件、改配置、启动新工具)→ 用 docker exec -it(退出无风险,多会话独立)。

5 、events------获取docker守护进程生成的事件

语法:docker events [OPTIONS]

参数

-f,--filter:根据提供的条件过滤输出

--format:使用go模板格式化输出

--since:显示从指定时间开始的事件

--until:显示直到指定时间的事件

基本使用

1、获取所有事件

Docker events

2、过滤事件:

Docker events ---filter events=stop

只显示容器停止事件

3、格式化输出:

Docker events --format '{{.Time}} -- {{.Type}} -- {{.Action}}'

使用指定格式显示事件

4、显示从指定时间开始的事件

Docker events ---since "2023-07-22T15:04:05"

显示从2023-07-22T15:04:05 开始的事件。

4、显示直到指定时间的事件

Docker events --until "2023-07-22T15:04:05"

以上命令显示直到 2023-07-22T15:04:05 的事件。

6 、logs------获取和查看容器的日志输出

语法:docker logs [OPTIONS] CONTAINER

参数

-f,--follow:跟随日志输出

--since:从指定时间开始显示日志

-t,--timestamps:显示日志时间戳

--tail:仅显示日志的最后部分,例如---tail 10 显示最后10行

--details:显示提供给日志的额外详细信息

--until:显示直到指定时间的日志

基本使用

1、显示容器日志

Docker logs my-custom

显示名为 my-custom 的容器的所有日志,输出内容:

2、跟随日志输出

Docker logs -f my-custom

持续显示 my-custom的日志输出

3、显示带时间戳的日志

Docker logs -t my-custom

输出格式如下:

2023-07-22T15:04:05.123456789Z hello world

4、从指定时间开始显示日志

Docker logs --since= "2023-07-22T15:00:00" my-custom

5、显示最后10行日志

Docker logs --tail 10 my-custom

6、显示额外详细信息的日志

Docker logs --details my-custom

7、显示直到指定时间的日志

docker logs --until="2023-07-22T16:00:00" my_container

7 、wait------允许用户等待容器停止并获取其退出代码

语法:docker wait [OPTIONS] CONTAINER [CONTAINER...]

基本使用:

1、等待一个容器停止并获取其退出代码

Docker wait my-custom

2、等待多个容器停止

Docker wait container1 container2

3、启动一个会立即退出的容器

docker run --name test_container ubuntu bash -c "exit 5"

创建并启动一个名为 test_container 的容器,基于 ubuntu 镜像,在容器内执行 bash -c "exit 5" 命令,然后容器会因为这个命令执行完毕而停止,最终的退出状态码为 5。

4、先启动一个容器等待10秒后停止,执行wait返回

Docker run -d --name test-con ubuntu sleep 10

Docker wait test-con

10 秒后容器停止,docker wait 会输出退出码(0 表示正常)

8 、export------将容器的文件系统导出为tar归档文件

语法:docker export [OPTIONS] CONTAINER

参数

-o,--output:将输出保存到指定文件,而不是输出到标准输出

基本使用:

1、导出容器文件系统

Docker export my-custom

将名为my-custom的容器的文件系统导出到标准输出(当前终端)

2、将导出文件保存为tar文件

Docker export my-custom > my-custom-backup.tar

执行后,终端不会显示乱码,而是在当前目录下生成一个my-custom-backup.tar文件(这个文件可以复制、传输,后续还能通过 docker import 生成新镜像)。

3、使用---output选项保存导出文件

Docker export -o my-custom-back.tar my-cstom

将容器my-cstom的文件系统导出并保存到my-custom-back,tar文件中

9 、port------显示容器的端口映射信息

语法:docker port CONTAINER [PRIVATE_PORT[/PROTO]]

参数

  • CONTAINER: 要查询端口映射的容器的名称或 ID。
  • PRIVATE_PORT (可选): 容器内部的端口号。
  • PROTO (可选): 协议类型(tcp 或 udp),默认是 tcp。

基本使用

1、查看容器的所有端口映射:

Docker port my-custom

显示名为my-custom的容器的所有端口映射信息

2、查看特定端口的映射

Docker port my-custom 80

显示名为my-custom的容器内部的端口80映射到宿主机的哪个端口

3、查看特定端口和协议的映射

Docker port my-custom 80/tcp

显示名为my-custom的容器内部的 TCP 端口 80 映射到宿主机的哪个端口

4、启动一个容器并映射端口

Docker run -d -p 8080:80 --name my-custom nginx

10 、stats------实时显示docker容器的资源使用情况

语法:docker stats [OPTIONS] [CONTAINER...]

参数

--all,-a:显示所有的容器,包括未运行的

--format:指定返回值的模板文件

--no-stream:展示当前状态就直接退出了,不再实时更新

--no-true:不截断输出

基本使用

1、显示所有运行的容器的资源使用情况

Dokcer stats

2、显示所有容器的资源使用情况(包含未运行)

Dcker stats --all

3、只显示一次数据而不是持续刷新

Docker stats --no stream

4、使用自定义格式输出

docker stats --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}"

11 、update------更新docker容器的资源限制,包括内存,CPU等

语法:docker update [OPTIONS] CONTAINER [CONTAINER...]

参数

-m,--memory:设置容器的内存限制

--memory-swap:设置容器的内存和交换空间(swap)的总限制,若设置为-1,表示不限制交换空间

--cpu-shares:设置容器的CPU优先级,相对值,默认为1024,较大的值表示较高的优先级

--cpus:设置容器使用的CPU核心数,限制容器最多使用的CPU核心数

--cpu-period:设置cpu周期时间,用于配合---cpu-quota限制容器的CPU使用时间

--cpu-quota:设置容器在每个周期内可以使用的最大CPU时间

--blkio-weight:设置块I/O权重

--pids-limit:设置容器可以使用的最大进程数

--restart:设置容器的重启策略

基本使用

1、更新容器的内存限制

Docker update -m 2g my-custom

将my-custom容器的内存限制更新为2GB

2、设置CPU核心数限制

Docker update --cpus 1.5 my-custom

将my-custom容器的限制为最多使用1.5个CPU核心

3、更新容器的CPU权重

Docker update --cpu-shares 1024 my-custom

将容器的CPU权重设置为1024,默认是104

4、更新容器的I/O权重

Docker update --blkio-weight 700 my-custom

将容器的磁盘I/O权重设置为700,权重范围是10到1000

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

1 、commit------允许用户将容器的当前状态保存为新的docker镜像

语法:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

参数

-a:提交的镜像作者

-c:使用dockfile指令来创建镜像

-m:提交时的说明文字

-p:提交镜像前暂停容器(默认为true)

基本使用

1、将容器保存为新镜像

Docker commit my-custom master

将名为my-custom的容器保存为一个名为master的新镜像

2、指定标签

Docker commit my-custom master:latest

将名为my-custom的容器保存为带有latest标签的镜像

3、添加作者信息和提交信息

Docker commit -a "John" -m "Added new" my-custom master

将容器保存为新镜像,并添加作者信息和提交信息

4、在不暂停容器的情况下提交镜像

Docker commit --pause=false my-custom master

启动命令 是否直接进入容器 后续操作是否需要 docker exec 适用场景
docker run -d -it ... bash 否(后台运行) 是(需要 exec 发送命令) 希望容器在后台运行时操作
docker run -it ... bash 是(直接进入) 否(可直接输命令) 希望立即交互式操作容器

2 、cp------用于在容器和宿主之间复制文件或目录

语法

docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH

基本使用

1、从容器复制文件到宿主机

Docker cp my-custom:/path/in/container /path/on/host

将容器my-custom内的/path/in/container下的文件或目录复制到宿主机的/path/on/host下

2、从宿主机复制文件到容器

Docker cp /path/on/host my-custom:/path/in/contarner

将宿主机上的/path/on/host文件或目录复制到容器my-custom内的/path/in/container

3、启动一个容器并创建文件从容器复制到宿主过去

Docker run -d --name my-custom ubuntu bash -c "echo 'hello,docker'" > /hello.txt

Docker cp my-custom:/hello.txt ./hello.txt

3 、diff------显示docker容器文件系统的变更

语法:docker diff CONTAINER

参数

A:表示新增的文件或目录

B:表示删除的文件或目录

C:表示修改的文件或目录

基本使用

1、查看容器的文件系统变更

Docker diff my-custom

四、镜像仓库

1 、login/logout------管理docker客户端与docker注册表的身份验证

语法:docker login [OPTIONS] [SERVER]

参数

  • SERVER: Docker 注册表的服务器地址(默认是 Docker Hub)。

<strong常用选项< strong=""></strong常用选项<>

  • -u, --username: 登录用户名。
  • -p, --password: 登录密码(不推荐在命令行使用)。
  • --password-stdin: 从标准输入读取密码。

基本使用

1、登录docker hub

Docker login

提示输入docker hub用户名和密码

2、登录到docker hub(指定用户名)

Docker login ---username myusername

3、提示输入docker hub密码

Echo "mypassword" | docker login ---usernam myusername ---password-stdin

从标准输入读取密码,避免在命令行明文输入密码

4、登录到自定义注册表

Docker login myregistry.com

提示输入自定义注册表的用户名和密码

5、退出docker hub

Docker logout

退出当前用户在docker hub的登录状态

6、退出自定义注册表

Docker logout myrgistry.com

退出当前用户在myregistry.com的登录状态

2 、pull------从docker注册表(docker hub)中拉取(下载)镜像到本地

语法:docker pull [OPTIONS] NAME[:TAG|@DIGEST]

参数

-a,--all-tags:下载指定镜像的所有标签

--disable-content-trust:跳过镜像签名验证

基本使用

1、拉取默认标签(latest)的镜像

Docker pull ubuntu

这会从docker hub拉取名为ubuntu的镜像标签默认为latest

2、拉取特定标签的镜像

Docker pull ubuntu:20.04

这会从docker hub拉取名为ubuntu的镜像,标签为20.04

3、拉取特定摘要的镜像

Docker pull ubuntu@sha256:12345abcdef

这会拉取具有特定SHA256摘要的镜像

4、拉取所有标签的镜像

Docker pull ---all-tags ubuntu

这会拉取ubuntu镜像的所有可用标签

5、从自定义注册表拉取镜像

Docker pull myregistry.com/myrepo/myimage:mytag

这会从myregistry.com注册表中拉取myrepo仓库中的myimage镜像,标签为mytag

3 、push------将本地构建的docker镜像推送(上传)到docker注册表

语法:docker push [OPTIONS] NAME[:TAG]

参数

基本使用

1、推送默认标签(latest)的镜像

Docker push myrepo/myimage

这会将本地的myrepo/myimage:latest镜像推送到docker hub

2、推送特定标签的镜像

Docker push myrepo/myimage:1.0

这会将本地的myrepo/myimage:1.0镜像推送到docker hub

3、推送到自定义注册表

Docker push myregist.com/myrepo/myimage:mytag

这会将本地的myrepo/myimage镜像推送到myregistry.com注册表

4、推送镜像到docker hub

Docker login------登录hub

Docker build -t 用户名/myimage:1.0------构建镜像

Docker push 用户名/myimage:1.0------推送

5、推送镜像到自定义注册表

Docker login myregistry.com

Docker build -t myregistry.com/myrepo/myimage:mytag

Docker push myregistry.com/myrepo/myimage:mytag

4 、search------用于在docker hub或其它注册表中搜素镜像

语法:docker search [OPTIONS] TERM

参数

--automated:只列出automated build类型的镜像

--no-trunc:显示完整的镜像描述

-f<过滤条件>:列出收藏数不小于指定值的镜像

基本使用

1、搜素镜像

Docker search ubuntu

这会在docker hub中搜索包含关键字ubuntu的镜像

2、限制返回的搜索结果数量

Docker search ---limit 5 ubuntu

这会在docker hub中搜索包含关键字ubuntu的镜像,并返回前5个结果

3、过滤搜索结果

Docker search ---filter stars=50 ubuntu

这会在docker hub中搜索包含关键字ubuntu的镜像,并只返回stars数不低于50的镜像

4、不截断输出

Docker search ---no-trunc ubuntu

这会在docker hub搜索包含关键字ubuntu的镜像,并显示完整的镜像描述

5、自定义格式化输出

Docker search ---format "{{.Name}}: {{.StarCount}} stars" ubuntu

这会在docker hub 中搜素包含关键字ubuntu的镜像,并以指定格式显示镜像名称和star数

五、本地镜像管理

1 、images------列出本地的docker镜像

语法:docker images [OPTIONS] [REPOSITORY[:TAG]]

参数

-a,--all:显示所有镜像(包括中间层镜像)

--digests:显示镜像的摘要信息

-f,--filter:过滤输出,基于提供的条件

--format:使用go模板格式化输出

--no-trunc:显示完整的镜像ID

-q:--quiet:只显示镜像ID

基本使用

1、列出所有本地镜像

Docker images

2、列出带有摘要信息的镜像

Docker images --digests

3、列出所有镜像(包括中间层镜像)

Docker images --all

4、使用过滤条件列出镜像

Docker images --filter "dangling=true"

5、只显示镜像ID

Docker images --quiet

6、使用自定义格式输出

Docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.ID}}"

2 、rmi------删除不再需要的镜像

语法:docker rmi [OPTIONS] IMAGE [IMAGE...]

参数

-a,--all-tags:指定仓库名称时,删除该仓库下的所有镜像

-f,--force:强制删除镜像,即使该镜像被容器使用

--help:打印帮助信息并退出

--no-prune:不删除悬空的父镜像

-q,--quiet:安静模式,不显示删除镜像的详细信息

基本使用

1、删除单个镜像

Docker rmi ubuntu:latest

删除名为ubuntu的latestb标签的镜像

2、删除多个镜像

Docker rmi ubuntu:latest nginx:latest

3、删除镜像的多个标签

Docker rmi ubuntu:latest ubuntu:18.04

删除镜像ubuntu的latest和18.04标签

4、删除所有标签的镜像

Docker rmi -a ubuntu

5、强制删除镜像

Docker rmi -f ubuntu:latest

6、删除悬空的镜像

Docker rmi -d

删除所有没有标签的悬空镜像

7、安静模式删除所有镜像

Docker rmi -q $(docker images -q)

使用安静模式删除所有镜像,不显示删除的镜像信息

8、删除指定仓库的所有镜像

Docker rmi -a myrepo

删除myrepo仓库下的所有镜像

9、删除镜像并保留其子镜像

Docker rmi ---no-prune buntu:latest

删除ubuntu:latest镜像,但保留其子镜像

3 、tag------创建本地镜像的别名(tag)

语法:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

基本使用

1、为镜像打标签

Docker tag myimage:1.0 myrepo(用户名/仓库名)/myimage:latest

这会将本地myimage:1.0 镜像标记为myrepo/myimage:latest

2、为镜像打多个标签

Docker tag myimage:1.0 myrepo/myimage:stable

Docker tag myimage:1.0 myrepo/myimage:v1.0

这会将 myimage:1.0 分别标记为 myrepo/myimage:stable 和 myrepo/myimage:v1.0。

3、为镜像打标签以推送到docker hub

Docker tag myimage:1.0 myusername/image:1.0

Docker push myusername/myiamge:1.0

这会将myimage:1.0镜像标记为myusername/myimage:1.0并推送到docker hub

4 、build------从dockerfie构建docker镜像

语法:docker build [OPTIONS] PATH | URL | -

参数

-t,--tag:为构建的镜像指定名称和标签

-f,--file:指定dockerfile的路径(默认是PATH下的dockerfile)

--build-arg:设置构建参数

--no-cache:不使用缓存层构建镜像

--rm:构建成功后删除中间容器(默认开启)

--force-rm:无论构建成功与否,一律删除中间容器

--pull:始终尝试从注册表拉取最新的基础镜像

基本使用

1、构建镜像

Docker build -t myimage:latest

这会从当前目录读取dockerfile并构建一个名为myimage:latest的镜像

2、指定dockerfile路径

Docker build -f /path/to/dockerfile -t myimage:latest

这会从/path/to/目录读取dockerfile并构建一个名为myimage:latest的镜像

3、设置构建参数

Docker build --build-arg HTTP_PROXY=http://proxy.example.com -t myimage:latest .

这会在构建过程中使用HTTP_PROXY环境变量

4、不使用缓存层构建镜像

Docker build ---no-cache -t myimage:latest .

5 、history------查看指定镜像的历史层信息

语法:docker history [OPTIONS] IMAGE

参数

-h,--human:以人类可读的格式显示镜像大小

--no-trunc:显示完整的输出,不截断信息

-q,--quiet:仅显示镜像ID

基本使用

1、查看镜像历史

Docker history myimage:latest

2、显示完整输出

Docker history ---no trunc myimage:latest

3、仅显示镜像ID

Docker history -q myimage:latest

6 、save------将一个或多个docker镜像保存到一个tar归档文件中

语法:docker save [OPTIONS] IMAGE [IMAGE...]

参数

-o,--output:指定输出文件的路径

基本使用

1、保存单个镜像到文件

Docker save -o myimage.tar myimage:latest

这将myimage:latest镜像保存为myimage.tar

2、保存多个镜像到同一个文件

Docker save -o multiple_images.tar myimage:latest anotherimage:latest

这将myiamge:latest和anotherimage:latest镜像保存到multiple_images.tar文件中

docker save 保存的是镜像(image),docker export 保存的是容器(container);

docker load 用来载入镜像包,docker import 用来载入容器包,但两者都会恢复为镜像;

docker load 不能对载入的镜像重命名,而 docker import 可以为镜像指定新名称。

7 、load------从由docker save命令生成的tar文件中加载docker镜像

语法:docker load [OPTIONS]

参数

-I,--input:指定输入文件的路径

-q,--quiet:安静模式,减少输出信息

基本使用

1、从文件加载镜像

Docker load -I myimage.tar

这将从myimage.tar文件加载镜像

2、从标准输入加载镜像

Cat myimage.tar | docker load

这将通过管道从标准输入加载镜像

8 、import------从一个tar文件或url导入容器快照,从而创建一个新的docker容器

语法:docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

参数

-c,--change:在导入过程中应用dockerfile指令,如CMD、ENTRYPOINT

-m,--message:为导入的镜像添加注释

基本使用

1、从本地tar文件导入镜像

Docker import mycontainer.tar mynewimage:latest

这将从mycontainer.tar文件导入镜像,并命名为mynewimage:latest

2、从url导入镜像

Docker import http://example.com/mycontainer.tar mynewimage:latest

这将从指定的 URL 导入镜像,并命名为 mynewimage:latest。

3、从标准输入导入镜像

Cat mycontainer.tar | docker import -- mynewimage:latest

这将通过管道从标准输入读取 tar 文件并导入镜像。

4、在导入过程中应用变更

docker import -c "ENV LANG=en_US.UTF-8" -c "CMD /bin/bash" mycontainer.tar mynewimage:latest

这将从 mycontainer.tar 导入镜像,并在过程中设置环境变量 LANG 和命令 CMD。

六、info | version

1 、info------显示docker的系统级信息,包括当前的镜像和容器数量

语法:docker info [OPTIONS]

2 、version------显示docker客户端和服务端的版本信息

语法:docker version [OPTIONS]

七、docker compose

1 、docker compose run------启动一个新容器并运行一个特定的应用程序

语法:docker compose run [OPTIONS] SERVICE [COMMAND] [ARGS...]

参数

--rm:运行后自动删除容器

-d:以分离模式运行容器

-T:禁用伪TTY

基本使用

1、运行一个特定服务的命令

Docker compose run web python manage.py migrate

2、自动删除容器

Docker compose run ---rm web bash

这个命令会运行web服务并启动一个Bash终端,任务完成后会删除容器

2 、docker compose rm------启动一个新容器并删除一个特定的应用程序

语法:docker compose rm [OPTIONS] [SERVICE...]

参数

-f,--force:强制删除容器,而不提示用户确认

-s,--stop:首先停止正在运行的容器,然后删除它们

-v,--volumes:同时删除与容器关联的卷

基本使用

1、删除所有已停止的服务容器

Docker compose rm

会列出并提示是否删除所有停止的服务容器

2、强制删除所有已停止的服务容器

Docker compose rm -f

直接删除停止的容器,不会提示用户确认

3、删除特定服务的已停止容器

Docker compose rm web

仅删除web服务的已停止容器

4、删除并清理相关卷

Docker compose rm -v

3 、docker compose ps------从docker compose检查docker容器状态

语法:docker compose ps [OPTIONS] [SERVICE...]

参数

-a,--all:列出所有容器,包括已停止的容器

-q,--quiet:仅显示容器ID,不显示其他信息

--services:仅列出服务名称,不显示容器的详细信息

--filter:根据条件过滤输出结果

输出信息:name、command、state、ports

基本使用

1、列出所有运行中的容器

Docker compose ps

显示当前项目中正在运行的容器及其状态

2、列出所有容器(包括已停止的容器)

Docker compose ps -a

包括停止的容器在内,列出所有容器的状态

3、仅显示容器ID

Docker compose ps -q

只返回容器的ID,不包括其他详细信息

4、列出所有服务的名称

Docker compose ps --services

只显示服务名称,而不列出容器的详细信息

5、根据状态过滤容器

Docker compose ps ---filter "status=running"

仅列出状态为running的容器

4 、docker compose build------构建docker compose文件

语法:docker compose build [OPTIONS] [SERVICE...]

参数

--no-cache:在构建过程中不使用缓存层,强制从头开始构建镜像

--pull:始终尝试从注册表中拉取最新的基础镜像

--build-arg:传递构建时的变量(类似于docker的build-arg)

--progress:指定构建的进度样式(auto、plain、tty)影响显示的输出方式

--parallel:并行构建多个服务镜像以提高速度

--no-rm:构建失败时,保留中间容器(默认在成功或失败后都会删除中间容器)

基本使用

1、为所有服务构建镜像

Docker compose build

根据docker-compose.yml中的配置,为所有服务构建镜像

2、构建特定服务的镜像

Docker compose build web

仅为web服务构建镜像

3、不使用缓存构建镜像

Docker compose build ---no-cache

强制docker 从头构建所有镜像,不使用之前构建的缓存层

4、从最新基础镜像构建

Docker compose build ---pull

确保docker拉取最新的基础镜像,而不是使用本地镜像

5、传递构建变量

Docker compose build --build-arg NODE_ENV=production

通过---build-arg传递构建时所需的变量,例如传递NODE_ENV环境变量

5 、docker compose up------运行docker compose 文件

语法:docker compose up [OPTIONS] [SERVICE...]

参数

-d:后台模式运行

--build:在启动之前强制重新构建镜像,即使镜像存在

--no-build:阻止在启动时构建镜像,即使镜像不存在也不构建

--force-recreate:强制重新创建容器,即使它们已经存在且内容未发生变化。

--no-recreate:如果容器已经存在,则不重新创建它们(默认行为是如果配置文件变化则重新创建)。

--remove-orphans:移除不再在 Compose 文件中定义的孤立容器。

-V, --renew-anon-volumes:重新创建匿名卷(删除旧的卷并创建新的)。

基本使用

1、启动所有服务并附加到控制台

Docker compose up

启动compose文件中定义的所有服务,并将日志输出显示在当前终端中

2、在后台模式运行服务

Docker compose up -d

后台运行

3、仅启动指定服务

Docker compose up web

只启动web

4、启动服务并强制重建镜像

Docker compose up --build

在启动服务之前,强制重新构建服务镜像

5、启动服务并强制重新创建容器

Docker compose up --force-recreate

强制重新创建服务容器,即使之前的容器存在且未发生更改

6、启动服务并移除不再存在于 Compose 文件中的孤立容器

docker compose up --remove-orphans

移除任何不再在当前 docker-compose.yml 文件中定义的容器。

6 、docker compose ls------列出docker compose 服务

语法:docker compose ls [OPTIONS]

参数

--all:显示所有项目,包括未启动的项目

--filter:根据条件过滤输出结果,例按状态过滤

--format:指定输出格式(如table,json)

--quiet:只显示项目名称,而不显示其他信息

输出信息:name(项目名称)、status(项目状态)、configfiles(与项目关联的yml路径)

基本使用

1、列出所有运行的docker compose项目

Docker compose ls

2、列出所有项目(包括未启动的)

Docker compose ls --all

3、仅显示项目名称

Docker compose ls --quiet

4、按状态过滤项目

Docker compose ls --filter "status=running"

7 、docker compose start------启动docker compose文件创建的容器

语法:docker compose start [SERVICE...]

基本使用

1、启动所有已停止的服务

Docker compose start

2、启动特定服务

Docker compose start web

8 、docker compose restart------重启docker compose文件创建的容器

语法:docker compose restart [SERVICE...]

基本使用

1、重启所有服务

Docker-compose restar

2、重启特定的服务(附加名为web和db的服务)

Docker-compose restart web db

八、网络命令

1 、docker network ls------列出所有网络

2 、docker network create <network>------创建一个新的网络

3 、docker network rm <network>------删除指定的网络

4 、docker network connect <network> <container>------连接容器到网络

5 、docker network disconnect <network> <container>------断开容器与网络的连接。

基本使用

1、列出所有网络

Docker network ls

2、查看指定网络的详细信息

Docker network inspect

3、创建一个新网络

Docker network create my-network

4、删除一个或多个网络

Docker network rm net1 net2

5、将容器连接到一个网络

Docker network connect my-network my-container

6、将容器从网络断开

Docker network disconnect my-network my-container

九、卷命令

1 、docker volumes ls------列出所有卷

2 、docker volumes create <volume>------创建一个新的卷

3 、docker volume rm <volume>------删除指定的卷

4 、docker volume inspect <volume>------显示卷的详细信息

基本使用

1、列出所有卷

Docker volume ls

2、查看指定卷的详细信息

Docker volume inspect my_volume

3、创建一个新卷

Docker volume create my-volume

4、删除一个或多个卷

Docker volume rm my-volume

5、删除未使用的卷

Docker volume prune

相关推荐
蘼子1 小时前
Windows装Docker至D盘/其他盘(最新,最准确,直接装)
windows·docker·容器
一只鹿鹿鹿1 小时前
数据治理文档(word原件)
java·运维·spring boot·后端
暴力求解1 小时前
Linux--进程(七)环境变量
linux·运维·服务器
tod1132 小时前
Redis Sentinel 高可用架构:从原理到 Docker 部署全解析
数据库·redis·docker·架构·sentinel
Doro再努力2 小时前
【Linux操作系统14】操作系统概念与管理思想深度解析
linux·运维·服务器
Trouvaille ~2 小时前
【Linux】poll 多路转接:select 的改良版,以及它留下的遗憾
linux·运维·服务器·操作系统·select·poll·多路复用
没有bug.的程序员2 小时前
本地开发环境优化深度实战:Docker Compose 编排内核、依赖服务治理与极速环境搭建指南
运维·docker·容器·compose·本地开发·编排内核·依赖服务治理
Doro再努力2 小时前
【Linux操作系统13】GDB调试进阶技巧与冯诺依曼体系结构深度解析
linux·运维·服务器
予枫的编程笔记2 小时前
【Docker高级篇】吃透容器编排:Swarm vs K8s 核心差异,为后续K8s学习打牢基础
docker·云原生·kubernetes·linux内核·容器编排·容器技术·运维技术