还在为记不住 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