环境信息
命令 | 描述 |
---|---|
docker info **[OPTIONS]** | **显示Docker系统信息,包括镜像和容器数等。 egg: $ docker info $ docker info -f {{.Containers}}** |
docker version** [OPTIONS**] | 显示Docker版本信息。 egg: $ docker ** version $ docker version -f {{.Server**}} |
容器生命周期管理
命令 | 描述 |
---|---|
docker create [OPTIONS] IMAGE [COMMAND] [ARG…] | 创建一个新的容器但不启动它。 egg: $ docker create —name myos busybox:latest |
docker exec [OPTIONS] CONTAINER COMMAND [ARG…] | 在运行的容器中执行命令。**与Dockerfile结合使用时,启动一个子进程(进行初始化),之后替换运行的进程,成为主进程,并接管其ID。 egg: $ docker exec -i -t myos /bin/bash # 开启一个交互模式的终端** |
docker run [OPTIONS] IMAGE [COMMAND] [ARG…] | 创建一个新的容器并运行一个命令 egg: $ docker run —name mynginx -d nginx:latest $ docker run -it nginx:latest /bin/bash $ docker run -p 8099:80 -v /data/tmp:/data -d nginx:latest |
docker start [OPTIONS] CONTAINER [CONTAINER…] | 启动一个或多个已经被停止的容器,可启动Created状态的容器。 egg: $ docker start myos |
docker stop [OPTIONS] CONTAINER [CONTAINER…] | 停止一个运行中的容器。 egg: $ sudo docker stop $(sudo docker ps -q) # 停止所有容器 |
docker restart [OPTIONS] CONTAINER [CONTAINER…] | 重启容器 |
docker kill [OPTIONS] CONTAINER [CONTAINER…] | 杀掉一个运行中的容器。 egg: $ docker kill -s KILL mynginx # -s :向容器发送一个信号 |
docker rm [OPTIONS] CONTAINER [CONTAINER…] OPTIONS说明: -f :通过 SIGKILL 信号强制删除一个运行中的容器。 -l :移除容器间的网络连接,而非容器本身。 -v :删除与容器关联的卷。 |
删除一个或多个容器。 egg: **$ sudo |
docker rm sudo docker ps -a | grep Exited | awk '{print $1}'
# 删除异常停止的docker容器
$ sudo docker rm $(sudo docker ps -aq) # 删除所有容器
$ sudo docker stop $(sudo docker ps -q)
& sudo docker rm $(sudo docker ps -aq) # 停止并删除容器** |
| docker pause [OPTIONS] CONTAINER [CONTAINER…] | 暂停容器中所有的进程。
egg:
$ docker pause mynginx |
| docker unpause [OPTIONS] CONTAINER [CONTAINER…] | 恢复容器中所有的进程。
egg:
$ docker unpause mynginx |
容器操作运维
命令 | 描述 |
---|---|
docker ps [OPTIONS] OPTIONS说明: -a :显示所有的容器,包括未运行的。 |
-f :根据条件过滤显示的内容。
—format :指定返回值的模板文件。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
—no-trunc :不截断输出。
-q :静默模式,只显示容器编号。
-s :显示总的文件大小。
| (1)列出容器信息。
egg:
$ docker ps # 列出所有在运行的容器信息
$ docker ps -n 5 # 列出最近创建的5个容器信息
$ docker ps -a -q # 列出所有创建的容器ID
$ docker ps —format “{{.ID}}: {{.Command}}” # 使用模板过滤
(2)根据条件过滤显示的内容。
$ docker run -d —name=test-nginx —label color=blue nginx
egg:
$ docker ps —filter “label=color” # 根据标签过滤
$ docker ps —filter “label=color=blue” # 根据标签过滤
$ docker ps —filter “name=test-nginx” # 根据名称过滤
$ docker ps -a —filter ‘exited=0’ # 根据状态过滤
$ docker ps —filter status=running # 根据状态过滤
$ docker ps —filter status=paused # 根据状态过滤
(3)根据镜像过滤
egg:
$ docker ps —filter ancestor=nginx # 镜像名称
$ docker ps —filter ancestor=9beeba249f3e # 镜像ID(nginx)
(4)根据启动顺序过滤
egg:
$ docker ps -f before=mynginx # 之前
$ docker ps -f since=mynginx # 之后 |
| docker inspect [OPTIONS] NAME|ID [NAME|ID…]
OPTIONS说明:
-f :指定返回值的模板文件。
-s :显示总的文件大小。
—type :为指定类型返回JSON。
| 获取容器/镜像的元数据。
egg:
$ docker inspect nginx:latest # 获取镜像nginx:latest的元信息。
$ docker inspect —format=’{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}’ mynginx # 获取正在运行的容器的IP |
| docker top [OPTIONS] CONTAINER [ps OPTIONS] | 查看容器中运行的进程信息,支持 ps 命令参数。(容器运行时不一定有/bin/bash终端来交互执行top命令,而且容器还不一定有top命令,可以使用docker top来实现查看container中正在运行的进程)
egg:
$ docker top mynginx # 查看容器的进程信息。
$ for i in sudo docker ps |grep Up|awk '{print $1}'
;do echo \ &&sudo docker top $i; done # 查看所有运行容器的进程信息 |
| docker attach [OPTIONS] CONTAINER | 连接到正在运行中的容器。(要attach上去的容器必须正在运行,可以同时连接上同一个container来共享屏幕(与screen命令的attach类似),attach是可以带上—sig-proxy=false来确保CTRL-D或CTRL-C不会关闭容器)使用该命令有一个问题。当多个窗口同时使用该命令进入该容器时,所有的窗口都会同步显示。如果有一个窗口阻塞了,那么其他窗口也无法再进行操作。其功能可使用**exec替代。**
egg:
$ docker attach ${容器ID}
$ docker attach —sig-proxy=false mynginx # 容器将访问日志指到标准输出,连接到容器查看访问信息 |
| docker wait [OPTIONS] CONTAINER [CONTAINER…] | 阻塞运行直到容器停止,然后打印出它的退出代码。
egg:
$ docker wait CONTAINER |
| docker port [OPTIONS] CONTAINER [PRIVATE_PORT[/PROTO]] | 列出指定容器的端口映射,或者查找将PRIVATE_PORT NAT到面向公众的端口。
egg:
$ docker port mynginx # 查看容器mynginx的端口映射情况 |
| docker rename CONTAINER NEW_NAME | 用于重命名一个容器。
egg:$ docker rename my_container my_new_container |
| docker stats [OPTIONS] [CONTAINER…]
—all, -a 默认false 显示所有容器(默认显示刚刚运行)
—format 使用Go模板打印映像
—no-stream 禁用流统计信息,仅拉取第一个结果 | 用于显示容器的实时流资源使用统计信息。要将数据限制到一个或多个特定容器,需指定一个容器名称或由空格分隔的id列表。
egg:
$ docker stats # 在Linux守护进程上运行所有运行的容器上的docker统计信息使用Linux守护进程,通过名称和id对多个容器运行docker统计信息。
$ docker stats mynginx 5d697be7dfe7 # 使用Linux守护进程,通过名称和id对多个容器运行docker统计信息。
$ docker stats —format “{{.Container}}: {{.CPUPerc}}”
$ docker stats —format “table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}” |
| docker container stats [OPTIONS] [CONTAINER…]
—all, -a 默认false 显示所有容器(默认只显示运行的)
—format 使用Go模板打印映像
—no-stream 默认false 禁用流统计信息,仅拉取第一个结果 | 用于显示容器的实时流资源使用统计信息。
egg:
$ docker container stats mynginx |
容器rootfs命令
命令 | 描述 |
---|---|
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] OPTIONS说明: -a :提交的镜像作者; -c :使用Dockerfile指令来创建镜像; -m :提交时的说明文字; -p :在commit时,将容器暂停。 |
提取正在运行的容器为镜像(从容器创建一个新的镜像) egg: $ docker commit -a “docker.polaris” -m “my apache” ${image_id} my:v1 |
docker cp <本地文件或目录> <容器文件或目录> docker cp <容器文件或目录> <本地文件或目录> |
用于容器与主机之间的数据拷贝。(特别注意目录后面的/) egg: $ docker cp /x ${image_id}:/www/ # 将主机/x目录拷贝到容器${image_id}的/www目录下 $ docker cp /x ${image_id}:/www # 同上,但目录将重命名为www $ docker cp ${image_id}:/www /tmp/ # 将容器${image_id}的/www目录拷贝到主机的/tmp目录中 |
docker diff [OPTIONS] CONTAINER | 检查容器里文件结构的更改(仅显示容器文件系统上的差异,并且不会显示与卷装入点内容相关的任何内容)。(A - Add;D - Delete;C - Change) egg: $ docker diff mynginx |
镜像仓库
命令 | 描述 |
---|---|
docker login [OPTIONS] [SERVER] | 登陆到一个Docker镜像仓库,默认为官方仓库Docker Hub egg: $ docker login -u ${用户名} -p ${密码} # 登录Docker Hub $ docker login 192.168.0.101:5000 # 登录私仓 $ docker login —username=${用户名} registry.cn-qingdao.aliyuncs.com # 阿里云公仓 |
docker logout [OPTIONS] [SERVER] | 登出一个Docker镜像仓库,默认为官方仓库Docker Hub egg: $ docker logout |
docker pull [OPTIONS] NAME[:TAG|@DIGEST] OPTIONS说明: -a :拉取所有 tagged 镜像 —disable-content-trust :忽略镜像的校验,默认开启 |
从镜像仓库中拉取或者更新指定镜像。 egg: $ docker pull java # 从Docker Hub下载java最新版镜像 $ docker pull -a java # 从Docker Hub下载REPOSITORY为java的所有镜像 $ docker pull registry.cn-qingdao.aliyuncs.com/polaris-docker/busybox:1.0.0 # 从阿里云公仓拉取镜像 $ docker pull 192.168.0.101:5000/busybox:1.0.0 # 从私仓拉取镜像 |
docker push [OPTIONS] NAME[:TAG] OPTIONS说明: —disable-content-trust :忽略镜像的校验,默认开启 |
将本地的镜像上传到镜像仓库,要先登陆到镜像仓库。 egg: $ docker push myapache:v1 # 上传本地镜像到镜像仓库中 $ docker tag busybox registry.cn-qingdao.aliyuncs.com/polaris-docker/busybox:1.0.0 # 上传镜像前需要先tag(公仓) $ docker push registry.cn-qingdao.aliyuncs.com/polaris-docker/busybox:1.0.0 # 上传镜像到阿里云公仓 $ docker tag busybox:latest 192.168.0.101:5000/busybox:1.0.0 # 上传镜像前需要先tag(私仓) $ docker push 192.168.0.101:5000/busybox:1.0.0 # 上传镜像到私仓 |
docker search [OPTIONS] TERM OPTIONS说明: —automated :只列出automated build类型的镜像 |
—no-trunc :显示完整的镜像描述
-s :列出收藏数不小于指定值的镜像
| 从Docker Hub查找镜像。
egg:
$ docker search -s 10 java # 从Docker Hub查找所有镜像名包含java,并且收藏数大于10的镜像 |
本地镜像管理
命令 | 描述 |
---|---|
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配置 —tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签 —network: 默认 default。在构建期间设置RUN指令的网络模式 |
用于使用 Dockerfile 创建镜像,在Docker守护进程执行Dockerfile中的指令前,首先会对Dockerfile进行语法检查,有语法错误时会返回。 egg: $ docker build -t runoob/ubuntu:v1 . # 使用当前目录的Dockerfile创建镜像 $ docker build github.com/creack/docker-firefox # 使用URL的Dockerfile创建镜像 $ docker build -f /path/to/a/Dockerfile . # 通过-f Dockerfile文件的位置 |
docker images [OPTIONS] [REPOSITORY[:TAG]] OPTIONS说明: -a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层); |
—digests :显示镜像的摘要信息;
-f :显示满足条件的镜像;
—format :指定返回值的模板文件;
—no-trunc :显示完整的镜像信息;
-q :只显示镜像ID。
| 列出本地镜像。
egg:
$ docker images # 查看本地镜像列表
$ docker images busybox # 列出本地镜像中REPOSITORY为busybox的镜像列表 |
| docker rmi [OPTIONS] IMAGE [IMAGE…]
OPTIONS说明:
-f :强制删除;
—no-prune :不移除该镜像的过程镜像,默认移除; | 删除本地一个或多个镜像。
egg:
$ sudo docker rmi $(sudo docker images -q) # 删除所有镜像
$ sudo docker rmi -f $(sudo docker images
-q) # 强制删除所有镜像
$ sudo docker rmi $(sudo docker images -f
“dangling=true” -q) # 删除还没下载完成的镜像
$ sudo
docker rmi -f sudo docker images |
grep '<none>' | awk '{print $3}'
# 删除名称或标签为none的镜像 |
| docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG] | 记本地镜像,将其归入某一仓库。
egg:
$ docker tag busybox:latest busybox:v3 # 将镜像busybox:latest标记为busybox:v3镜像
$ docker tag busybox registry.cn-qingdao.aliyuncs.com/polaris-docker/busybox:1.0.0 # 上传镜像前需要先tag(公仓)
$ docker push registry.cn-qingdao.aliyuncs.com/polaris-docker/busybox:1.0.0 # 上传镜像到阿里云公仓
$ docker tag busybox:latest 192.168.0.101:5000/busybox:1.0.0 # 上传镜像前需要先tag(私仓) |
| docker save [OPTIONS] IMAGE [IMAGE…]
OPTIONS 说明:
-o :输出到的文件
| 将指定镜像保存成 tar 归档文件。
egg:
$ docker save -o busybox_v1.tar busybox:latest # 将镜像busybox:latest生成busybox_v1.tar
$ docker save busybox:latest > /share/busybox_v1.tar |
| docker load [OPTIONS]
OPTIONS 说明:
—input , -i : 指定导入的文件,代替 STDIN
—quiet , -q : 精简输出信息
| 导入使用 docker save 命令导出的镜像。
egg:
$ docker load < /share/busybox_v1.tar
$ docker load —input /share/busybox_v1.tar |
| docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
OPTIONS说明:
-c :应用docker 指令创建镜像
-m :提交时的说明文字
| 从归档文件中创建镜像,每次创建将产生新的**${image_id}**。
egg:
$ docker import /share/mynginx_v1.tar mynginx:v1
$ cat /share/mynginx_v1.tar | sudo docker import - mynginx:v1 |
| docker export [OPTIONS] CONTAINER
OPTIONS说明:
-o :将输入内容写到文件
| 将容器作为一个tar归档文件导出。
egg:
$ docker export mynginx > /share/mynginx_v1.tar
$ docker export -o mynginx-date +%Y%m%d
.tar mynginx # 将id为${image_id}的容器按日期保存为tar文件 |
资源管理
命令 | 描述 |
---|---|
docker volume docker -v <**宿主机目录>:<容器目录**> |
管理Docker数据卷。 egg: **$ sudo |
docker volume ls -qf dangling=true # **列出未使用的数据卷
$ **sudo
docker volume rm $(sudo docker volume ls -qf dangling=true) # 删除未使用的数据卷 |
| docker network COMMAND
Commands:
-connect :Connect a container to a network
-create :Create a network
-disconnect :Disconnect a container from a -network
-inspect :Display detailed information on one or more networks
-ls :List networks
-prune :Remove all unused networks
-rm :Remove one or more networks | 管理Docker网络。
egg:
$ docker network ls # 显示网络列表
$ docker network inspect bridge # 显示现有网络的详细信息
$ docker network connect [OPTIONS] NETWORK CONTAINER # 将容器连接到一个网络
$ docker network create [OPTIONS] NETWORK # 创建一个网络
$ docker network disconnect [OPTIONS] NETWORK CONTAINER # 容器断开一个网络
$ docker network prune # 移除所有无用的网络
$ docker network rm NETWORK [NETWORK…] # 移除指定的网络 |
| docker prune | prune 命令用来删除不再使用的 docker 对象。
egg:
$ docker image prune # **删除所有未被 tag 标记和未被容器使用的镜像
$ docker image prune **-a # 删除所有未被容器使用的镜像
$ docker container prune # **删除所有停止运行的容器
$ docker volume prune # **删除所有未被挂载的卷
$ docker network prune # **删除所有网络
$ docker system prune # **删除 docker 所有资源** |
系统日志信息
命令 | 描述 |
---|---|
docker events [OPTIONS] OPTIONS说明: -f :根据条件过滤事件 |
—since :从指定的时间戳后显示所有事件
—until :流水时间显示到指定的时间为止
| 通过终端记录显示docker 容器发生的变化,新开终端等待docker操作即可看到docker的实时操作。如果指定的时间是到秒级的,需要将时间转成时间戳。如果时间为日期的话,可以直接使用。
egg:
$ docker events —since=”1467302400” # 显示2016年7月1日后Docker的所有事件
$ docker events -f “image”=”busybox:latest” —since=”1467302400” # 显示busybox:latest镜像2016年7月1日后的相关事件
$ docker events —since=”2020-05-31” |
| docker history [OPTIONS] IMAGE
OPTIONS说明:
-H :以可读的格式打印镜像大小和日期,默认为true
—no-trunc :显示完整的提交记录
-q :仅列出提交记录ID
| 查看指定镜像的创建历史。
egg:
$ docker history busybox:latest # 查看本地镜像busybox:latest的创建历史 |
| docker logs [OPTIONS] CONTAINER
OPTIONS说明:
-f : 跟踪日志输出
—since :显示某个开始时间的所有日志
-t : 显示时间戳
—tail :仅列出最新N条容器日志
| 获取容器的日志。
egg:
$** docker logs -f mynginx # 跟踪查看容器mynginx的日志输出
$ docker logs —since=”2016-07-01” —tail=10 mynginx # 查看容器mynginx从2016年7月1日后的最新10条日志
$ docker logs -f -t
—tail <行数> <容器名> # 查看容器的实时日志
$ docker logs -f -t
—tail=<行数> <容器名>** # 查看容器的实时日志 |
Docker资源清理
查看磁盘使用情况
# 查看宿主机的磁盘使用情况
sudo df -h
sudo du -hs /var/lib/docker/
# 查看Docker的磁盘使用情况
sudo docker system df
sudo docker system df -v
清理Docker资源
prune命令用来删除不再使用的docker对象。
sudo docker image prune # 删除所有未被 tag 标记和未被容器使用的镜像
sudo docker image prune -a # 删除所有未被容器使用的镜像
sudo docker container prune # 删除所有停止运行的容器
sudo docker volume prune # 删除所有未被挂载的卷
sudo docker network prune # 删除所有网络
sudo docker system prune
docker system prune自动清理说明(该指令默认会清除所有如下资源):
- 已停止的容器(container)。
- 未被任何容器所使用的卷(volume)。
- 未被任何容器所关联的网络(network)。
- 所有悬空镜像(image)。
参考
RUNOOB.COM:Docker命令大全
https://www.runoob.com/docker/docker-command-manual.html
简书:Docker 空间使用分析与清理
https://www.jianshu.com/p/54e7bcc9f147