Docker 基本命令
Docker 官网:https://docs.docker.com/
Docker Hub 镜像仓库:https://hub.docker.com/
Docker 文档:https://docs.docker.com/engine/reference/run/
docker help 帮助
docker --help
docker 其他命令都可以在后面加上 --help 来查看该命令的帮助。例如:docker images --help
docker version 查看版本信息
docker version [OPTIONS]
OPTIONS说明:
- -f:指定返回值的模板文件。
示例:
docker version
docker info 查看系统信息
显示 Docker 系统信息,包括镜像和容器数等信息。
docker info [OPTIONS]
示例:
docker info
docker images 列出镜像列表
docker images [OPTIONS] [REPOSITORY[:TAG]]
OPTIONS说明:
- -a:列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
- --digests:显示镜像的摘要信息;
- -f:显示满足条件的镜像;
- --format:指定返回值的模板文件;
- --no-trunc:显示完整的镜像信息;
- -q:只显示镜像ID。
示例:列出本地镜像
docker images
执行结果:

字段说明:
- REPOSITORY:表示镜像的仓库源
- TAG:镜像的标签
- IMAGE ID:镜像ID
- CREATED:镜像创建时间
- SIZE:镜像大小
示例:列出 REPOSITORY 为 nginx 的镜像列表
docker images nginx
docker search 查找镜像仓库资源
从Docker Hub查找镜像。
docker search [OPTIONS] TERM
OPTIONS说明:
- --automated:只列出 automated build类型的镜像;
- --no-trunc:显示完整的镜像描述;
- -f <过滤条件>:列出收藏数不小于指定值的镜像。
示例:查找 node 镜像
docker search node
执行结果:

字段说明:
- NAME:镜像仓库源的名称
- DESCRIPTION:镜像的描述
- OFFICIAL:是否 docker 官方发布
- STARS:类似 Github 里面的 star,表示点赞、喜欢的意思。
- AUTOMATED:自动构建。
docker login 登录到 Docker镜像仓库
docker login [OPTIONS] [SERVER]
OPTIONS说明:
- -u:登陆的用户名
- -p:登陆的密码
示例:
docker login -u 用户名 -p 密码
docker logout 退出 Docker镜像仓库
docker logout [OPTIONS] [SERVER]
示例:
docker logout
docker pull 拉取镜像
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
OPTIONS说明:
- -a:拉取所有 tagged 镜像
- --disable-content-trust:忽略镜像的校验,默认开启
示例:拉取node最新版镜像
docker pull node:latest
docker push 推送镜像
docker push [OPTIONS] NAME[:TAG]
OPTIONS说明:
- --disable-content-trust:忽略镜像的校验,默认开启
示例:
docker push app:v1.0
Docker inspect 查看镜像/容器元数据
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
OPTIONS说明:
- -f:指定返回值的模板文件。
- -s:显示总的文件大小。
- --type:为指定类型返回JSON。
示例:获取 node:latest 的元数据
docker inspect node:latest
示例:在 node:latest 元数据中查找版本号
docker inspect node:latest | grep -i NODE_VERSION
docker save 打包镜像
将一个或多个镜像进行打包存储,多个镜像用空格分隔。
docker save [OPTIONS] IMAGE [IMAGE...]
OPTIONS 说明:
- -o:输出到的文件。
示例:将 node:latest 镜像打包到当前所在目录
docker save -o ./node.tar node:latest
示例:将 node:latest 和 nginx:latest 镜像打包到当前所在目录
docker save -o ./more.tar node:latest nginx:latest
docker rmi 删除镜像
docker rmi [OPTIONS] IMAGE [IMAGE...]
OPTIONS说明:
- -f:强制删除;
- --no-prune:不移除该镜像的过程镜像,默认移除;
示例:删除 node:latest 镜像
docker rmi -f node:latest
如果指定镜像已经创建容器,则需要把容器删除后,才能删除该镜像。可以加上 -f 进行强制删除。删除后,可以通过 docker images 确认是否已经删除。
示例:删除所有镜像
docker rmi $(docker images -q)
docker load 载入镜像
载入镜像,如果本地已经存在该镜像则会被覆盖。
docker load [OPTIONS]
OPTIONS 说明:
- --input , -i:指定导入的文件,代替 STDIN。
- --quiet , -q:精简输出信息。
示例:载入 node.tar 镜像
docker load --input ./node.tar
载入完毕后,可用 docker images 命令查看是否载入成功。
docker run 创建并运行容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS说明:
- -a stdin:指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
- -d:后台运行容器,并返回容器ID;
- -i:以交互模式运行容器,通常与 -t 同时使用;
- -P:随机端口映射,容器内部端口随机映射到主机的端口
- -p:指定端口映射,格式为:主机(宿主)端口:容器端口
- -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
- --name="nginx-lb":为容器指定一个名称;
- --dns 8.8.8.8:指定容器使用的DNS服务器,默认和宿主一致;
- --dns-search example.com:指定容器DNS搜索域名,默认和宿主一致;
- -h "mars":指定容器的hostname;
- -e username="ritchie":设置环境变量;
- --env-file=[]:从指定文件读入环境变量;
- --cpuset="0-2" or --cpuset="0,1,2":绑定容器到指定CPU运行;
- -m:设置容器使用内存最大值;
- --net="bridge":指定容器的网络连接类型,支持 bridge/host/none/container:四种类型;
- --link=[]:添加链接到另一个容器;
- --expose=[]:开放一个端口或一组端口;
- --volume, -v:绑定一个卷
示例:创建名为 nginx 的容器,将 nginx 容器的 80 端口映射到宿主机 80 端口,并用后台模式启动运行。
docker run -p 80:80 --name nginx -d nginx:latest
若想了解更多Docker 对 Nginx 的基本操作,可查看 Docker 安装配置 Nginx
docker rm 删除容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]
OPTIONS说明:
- -f:通过 SIGKILL 信号强制删除一个运行中的容器。
- -l:移除容器间的网络连接,而非容器本身。
- -v:删除与容器关联的卷。
示例:强制删掉 nginx 容器
docker rm -f nginx
可同时删除多个容器,在后面把要删除的容器名称都写上,用空格隔开。
示例:强制删除 nginx1 和 nginx2 容器
docker rm -f nginx1 nginx2
示例:删除所有容器
docker rm $(docker ps -a -q)
docker create 创建容器但不启动
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
示例:创建 映射宿主机 80 端口到容器 80 端口的 nginx 容器
docker create -p 80:80 --name nginx nginx:latest
docker update 更新容器
更新一个或多个容器的配置。
docker update [OPTIONS] CONTAINER [CONTAINER...]
OPTIONS说明:
- --blkio-weight:阻塞IO (相对权重),介于10到1000之间,0表示禁用(默认禁止)
- --cpu-period:限制CPU CFS(完全公平的调度程序)期限
- --cpu-quota:限制CPU CFS(完全公平的调度程序)配额
- --cpu-rt-period:API 1.25+,将CPU实时时间限制为微秒
- --cpu-rt-runtime:API 1.25+,将CPU实时运行时间限制为微秒
- --cpu-shares, -c:CPU份额(相对权重)
- --cpus:API 1.29+,CPU数量
- --cpuset-cpus:允许执行的CPU(0-3,0,1)
- --cpuset-mem:允许执行的MEM(0-3,0,1)
- --kernel-memory:内核内存限制
- --memory-swap:交换限制等于内存加交换,“-1”以启用无限交换
- --memory-reservatio:内存软限制
- --memory, -m:内存限制
- --pids-limit:API 1.40+,调节容器pids限制(-1表示无限制)
- --restart:容器退出时重新启动策略以应用
示例:更新 CPU 共享数量
docker update --cpu-shares 512 nginx
示例:更新容器的重启策略
docker update --restart=always nginx
示例:更新容器内存
docker update -m 512M nginx
docker start 运行容器
docker start [OPTIONS] CONTAINER [CONTAINER...]
示例:启动运行 nginx 容器
docker start nginx
docker stop 停止容器运行
docker stop [OPTIONS] CONTAINER [CONTAINER...]
示例:停止 nginx 容器运行
docker stop nginx
docker restart 重启容器
docker restart [OPTIONS] CONTAINER [CONTAINER...]
示例:重新启动运行 nginx 容器
docker restart nginx
docker pause 容器暂停运行
docker pause CONTAINER [CONTAINER...]
示例:暂停 nginx 容器运行
docker pause nginx
docker unpause 容器恢复运行
docker unpause CONTAINER [CONTAINER...]
示例:恢复 nginx 容器运行
docker unpause nginx
docker ps 查看容器运行状态
docker ps [OPTIONS]
OPTIONS说明:
- -a:显示所有的容器,包括未运行的。
- -f:根据条件过滤显示的内容。
- --format:指定返回值的模板文件。
- -l:显示最近创建的容器。
- -n:列出最近创建的n个容器。
- --no-trunc:不截断输出。
- -q:静默模式,只显示容器编号。
- -s:显示总的文件大小。
示例:查看包括已停止运行的所有容器状态
docker ps -a
docker exec 进入容器执行命令
进入运行中的容器执行命令。
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
OPTIONS说明:
- -d:分离模式: 在后台运行
- -i:即使没有附加也保持STDIN 打开
- -t:分配一个伪终端
示例:进入 nginx 容器查看版本号
docker exec -it nginx /bin/bash
# 进入容器后执行
node -v
# 从容器中退出
exit
docker logs 查看容器运行日志
docker logs [OPTIONS] CONTAINER
OPTIONS说明:
- -f:跟踪日志输出
- --since:显示某个开始时间的所有日志
- -t:显示时间戳
- --tail:仅列出最新N条容器日志
示例:跟踪 nginx 的日志输出
docker logs -f nginx
docker kill 杀掉运行中的容器
docker kill [OPTIONS] CONTAINER [CONTAINER...]
OPTIONS说明:
- -s:向容器发送一个信号
示例:杀掉运行中的 nginx 容器
# 直接杀掉容器
docker kill nginx
# 发送 kill 信号给 nginx 容器杀掉
docker kill -s kill nginx
docker port 列出容器映射端口
docker port [OPTIONS] CONTAINER [PRIVATE_PORT[/PROTO]]
示例:列出 nginx 容器的映射到宿主机的端口
docker port nginx
docker top 列出容器中进程信息
docker top [OPTIONS] CONTAINER [ps OPTIONS]
示例:查看 nginx 容器运行的进程信息
docker top nginx
示例:查看所有运行容器的进程信息
for i in `docker ps |grep Up|awk '{print $1}'`;do echo \ &&docker top $i; done
docker attach 连接运行中的容器
docker attach 命令 和 docker exec 命令 很像,不同的地方是 docker attach 连接后退出时会停止容器运行,但是用 docker attach 命令可以使用标准的键盘输入,标准的屏幕输出,错误输出。比较适合用来排查问题。
docker attach [OPTIONS] CONTAINER
示例:连接 nginx 容器
docker attach --sig-proxy=false nginx
OPTIONS说明:
- --sig-proxy=false:退出连接后不会停止容器。
docker cp 拷贝数据
用于容器与主机之间的数据拷贝。
拷贝文件: 容器 > 宿主机。
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
拷贝文件: 宿主机 > 容器。
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
OPTIONS说明:
-L:保持源目标中的链接
示例:将名为 nginx 容器中的 /etc/nginx/conf.d 拷贝到宿主机 的当前目录下
docker cp nginx:/etc/nginx/conf.d ./
示例:将宿主机当前当前目录下的 test.md 文件拷贝到名为 nginx 容器下的 /etc/nginx/conf.d/ 目录里。
docker cp ./test.md nginx:/etc/nginx/conf.d/
拷贝后,可通过 docker exec 命令进入容器查看。
docker diff 查看文件结构更改
docker diff [OPTIONS] CONTAINER
示例:查看 nginx 容器的文件结构更改信息
docker diff nginx
docker commit 提交容器更改创建新镜像
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS说明:
- -a:提交的镜像作者;
- -c:使用Dockerfile指令来创建镜像;
- -m:提交时的说明文字;
- -p:在commit时,将容器暂停。
示例:将 nginx 容器保存为新的镜像,并添加提交人信息和说明信息。
docker commit -a "maijinjie.cn" -m "maijinjie" nginx nginx:v1
docker events 实时查看事件
通过 docker events 可实时查看 docker 事件日志。
docker events [OPTIONS]
OPTIONS说明:
- -f :根据条件过滤事件;
- --since :指定时间戳开始的事件;
- --until :指定时间戳截止的事件;
示例:获取跟镜像 nginx:latest 相关的事件,从 2022-02-21 14:00:00 开始。
docker events -f "image=nginx:latest" --since="1645423200"
docker wait 等待容器停止
docker wait 会一直挂起,直到容器停止后,打印出容器停止的信息。
docker wait [OPTIONS] CONTAINER [CONTAINER...]
示例:等待 nginx 容器停止
docker wait nginx
docker export 导出容器文件系统
通过 docker export 导出的容器tar包,可以使用 docker impot 导入。和 docker save 不同的是,export 导出不会把历史的层一起打包,所以不能回滚历史层,但是打包后的体积会小一些。
docker export [OPTIONS] CONTAINER
OPTIONS说明:
- -o:将输入内容写到文件。
示例:将 nginx 容器内的日志文件保存为tar文件,注意这里指定的名称是容器名称。
docker export -o nginx.tar nginx
docker import 导入容器文件系统
docker import [OPTIONS] CONTAINER
OPTIONS说明:
- -o:将输入内容写到文件。
示例:将 nginx 容器内的日志文件保存为tar文件,注意这里指定的名称是容器名称。
docker import nginx.tar nignx:v1
- import 后产生的镜像,不能使用 docker tag 回滚历史层。因为 export 打包的文件系统不包含历史。
- 通过 docker import 导入容器tar包,会创建容器对应的镜像,需指定镜像名称和tags,如果没有指定,则导入的镜像没有名称和id。
- 如果 import 时,docker 内原本存在同名镜像,不会被覆盖,而是同时存在(一个作为容器导入的镜像,一个原本就是镜像)。
- 如果 import 时,docker 内已存在同样 import 进来的同名镜像,则会将旧的 镜像名称 和 镜像ID 都清空。

- import 导入的镜像,不能使用 “ docker images 镜像名称 ” 列出。

- import 导入的镜像,不能使用 “ docker rmi 镜像名称:tags ” 删除,可用 “ docker rmi 镜像id ” 删除。
docker history 查看镜像创建历史
docker history [OPTIONS] IMAGE
OPTIONS说明:
- -H:以可读的格式打印镜像大小和日期,默认为true;
- --no-trunc:显示完整的提交记录;
- -q:仅列出提交记录ID。
示例:查看 nginx:latest 镜像的创建历史
docker history nginx:latest
docker tag 标记镜像
标记本地镜像,将其归入某一仓库。
docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
示例:
docker tag nginx:latest nginx:v1
docker build 构建镜像
使用 Dockerfile 构建镜像。
docker build [OPTIONS] PATH | URL | -
OPTIONS说明:
- --build-arg=[]:设置镜像创建时的变量;
- --cpu-shares:设置 cpu 使用权重;
- --cpu-period:限制 CPU CFS周期;
- --cpu-quota:限制 CPU CFS配额;
- --cpuset-cpus:指定使用的CPU id;
- --cpuset-mems:指定使用的内存 id;
- --disable-content-trust:忽略校验,默认开启;
- -f:指定要使用的Dockerfile路径;
- --force-rm:设置镜像过程中删除中间容器;
- --isolation:使用容器隔离技术;
- --label=[]:设置镜像使用的元数据;
- -m:设置内存最大值;
- --memory-swap:设置Swap的最大值为内存+swap,"-1"表示不限swap;
- --no-cache:创建镜像的过程不使用缓存;
- --pull:尝试去更新镜像的新版本;
- --quiet, -q:安静模式,成功后只输出镜像 ID;
- --rm:设置镜像成功后删除中间容器;
- --shm-size:设置/dev/shm的大小,默认值是64M;
- --ulimit:Ulimit配置。
- --squash:将 Dockerfile 中所有的操作压缩为一层。
- --tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
- --network: 默认 default。在构建期间设置RUN指令的网络模式
示例:使用当前目录的 Dockerfile 创建镜像,标签为 myapp:v1。
docker build -t myapp:v1 .
