1. docker version
$ docker version
显示 Docker 版本信息。
2. docker info
$ docker info
显示 Docker 系统信息,包括镜像数,容器数和登录信息。
3. docker search
$ docker search [OPTIONS] TERM
$ docker search -s 10 django
从
--automated
只列出 automated build
类型的镜像;
--no-trunc
显示完整的镜像描述;
-s 40
列出收藏数不小于 40 的镜像。
4. docker pull
$ docker pull [OPTIONS] NAME[:TAG|@DIGEST]
$ docker pull laozhu/telescope:latest
从
-a
拉取所有的镜像(而不仅是打了标签的);
--disable-content-trust
跳过镜像验证。
5. docker login
$ docker login [OPTIONS] [SERVER]
$ ritchie@macbook-air:~# docker login Username: username Password: **** Email: user@domain.com Login Succeeded
默认的服务器为『https://index.docker.io/v1/』,也可以指定其他服务器。按步骤输入在
-u
用户名
-p
密码
-e
电子邮箱
6. docker logout
$ docker logout [SERVER]
运行后从指定服务器登出,默认为官方服务器。
7. docker images
$ docker images [OPTIONS] [REPOSITORY[:TAG]]
$ docker images ubuntu:latest
列出本地所有镜像。其中 [REPOSITORY[:TAG]] 对镜像名和标签名。
-a
列出所有镜像(含过程镜像);
-f
过滤镜像,如: -f ['dangling=true']
只列出满足 dangling=true
条件的镜像;
--digests
显示镜像摘要;
--no-trunc
显示完整的镜像长 ID;
-q
仅列出镜像短 ID;
--tree
以树状结构列出镜像的所有提交历史。
8. docker ps
$ docker ps [OPTIONS]
列出所有运行态容器。
-a
列出所有容器(包含非运行态容器);
--before="nginx"
列出在某一容器之前创建的容器,接受容器名称和ID作为参数;
--since="nginx"
列出在某一容器之后创建的容器,接受容器名称和ID作为参数;
-f [exited=]
列出满足 exited=
条件的容器;
-l
仅列出最新创建的1个容器(包含非运行态容器);
--no-trunc
显示完整的容器长 ID;
-n=4
列出最新创建的4个容器(包含非运行态容器);
-q
仅列出容器短 ID;
-s
显示文件大小。
9. docker rmi
$ docker rmi [OPTIONS] IMAGE [IMAGE...]
$ docker rmi nginx:latest postgres:latest python:latest
$ docker rmi 1565e86129b8 Deleted: 1565e86129b8c081d14aec943d54299c3935aaacbf966f37 70cd6494f28fd3ea
从本地删除一个或多个指定的镜像。
-f
取消镜像标签,并删除镜像;
--no-prune
保留该镜像的过程镜像。
10. docker rm
$ docker rm [OPTIONS] CONTAINER[CONTAINER...]
$ docker rm nginx-01 nginx-02 db-01 db-02
$ docker rm 1565e86129b8 # 本地删除指定的容器。
$ docker rm /redis /redis # 删除与 redis 有连接的容器。
$ docker rm $(docker ps -a -q) # 删除所有非运行态的容器。
$ docker rm -f redis # 发送 SIGKILL 信号关闭容器,并删除容器。
$ docker rm -l /webapp/redis /webapp/redis# 删除了 webapp 和 redis 间的底层连接,并停止所有网络通信。
-f
强行删除运行态容器(使用 SIGKILL);
-l
删除指定的容器间连接;
-v
删除与容器相关联的空间。
11. docker history
$ docker history [OPTIONS] IMAGE
$ docker history ubuntu:latest
查看指定镜像的构建历史记录。
-H, --human
以人类友好方式显示;
--no-trunc
显示完整的提交记录长 ID;
-q
仅列出提交记录短 ID。
12. docker events
$ docker events [OPTIONS]
$ docker events --since 1378216169
$ docker events --since "2013-09-03"
$ docker events --since "3m"
$ docker events --until "2012-03-10"
$ docker events --filter "event=stop"
$ docker events --filter "image=ubuntu:latest" $ docker events --filter "container=7805c1d35632"
$ docker events --filter "container=7805c1d35632" --filter "event=stop" # 容器报告以下事件类型 attach, commit, copy, create, destroy, die, exec_create, exec_start, export, kill, oom, pause, rename, resize, restart, start, stop, top, unpause # 镜像报告以下事件类型 delete, import, pull, push, tag, untag
从服务器拉取实时动态。
当前支持以下形式的事件筛选:
container (container=)
event (event=)
image (image=)
label (label=or label==)
-f, --filter=[]
设置筛选条件,支持多条件联合;
--since
设置查询的开始时间;
--until
设置查询的截止时间。
13. docker start
$ docker start [OPTIONS] CONTAINER[CONTAINER...]
启动一个或多个指定容器。
-a
连接 STDOUT/STDERR 并转发信号;
-i
连接 STDIN ,进入交互模式。
14. docker stop|restart
$ docker stop|restart [OPTIONS] CONTAINER[CONTAINER...]
停止或重启一个或多个容器。
-t 10
停止或者重启容器的等待时间(秒),超时后将发送 SIGKILL 信号停止进程。
15. docker kill
$ docker kill [OPTIONS] CONTAINER[CONTAINER...]
使用 SIGKILL 或指定信号停止一个或多个指定容器的进程。
-s, --signal="KILL"
自定义发送至容器的信号,默认为『KILL』。
16. docker save
$ docker save [OPTIONS] IMAGE [IMAGE...] $ docker save -o ubuntu.tar ubuntu:latest
$ docker save ubuntu:latest > ubuntu.tar
$ ls -sh ubuntu.tar 2.7M ubuntu.tar
$ docker save -o ubuntu.tar ubuntu:lucid ubuntu:saucy # 支持从同一镜像库中精选多个标签
将指定镜像保存为 tar
docker load
-o, --output
指定保存的文件,代替『STDOUT』。
17. docker load
$ docker load [OPTIONS]
$ docker load < ubuntu.tar
$ docker load -i ubuntu.tar
$ docker load -i busybox.tar.gz
从 tar
tar.gz
docker save
-i, --input
指定载入的镜像归档。
18. docker export
$ docker export [OPTIONS] CONTAINER
$ docker export -o nginx.tar nginx-01
$ docker export nginx-01 > nginx.tar
将指定的容器保存为 tar
docker import
-o, --output
指定保存的文件,代替『STDOUT』;
docker export
会导出底层目录的内容,不会导出空间『volume』上得内容。
19. docker import
$ docker import file|URL|-[REPOSITORY[:TAG]]
$ docker import http://example.com/exampleimage.tgz
$ docker import -c "ENV DEBUG true" nginx.tar nginx-web:latest
$ cat nginx.tar | docker import -m "New image imported from tarball" - nginx-web:latest
从归档文件(支持『.tar, .tar.gz, .tgz, .bzip, .tar.xz, .txz』格式文件,支持远程文件)创建一个镜像,并为导入镜像打上标签,不支持回滚。该命令为 docker export
-c, --change
导入镜像同时应用 Dockerfile 文件指令;
支持『CMD|ENTRYPOINT|ENV|EXPOSE|ONBUILD|USER|VOLUME|WORKDIR』指令;
-m, --commit
设置导入镜像的提交信息。
20. docker top
$ docker top [OPTIONS] CONTAINER [ps OPTIONS]
查看一个运行态容器的进程,支持 ps
21. docker inspect
$ docker inspect [OPTIONS] CONTAINER|IMAGE[CONTAINER|IMAGE...] docker instpect nginx:latest docker inspect nginx-container
查看镜像或容器的底层信息,默认返回 JSON
-f, --format
指定返回值的模板文件;
--type=container|image
选择类型是镜像还是容器;
-s, --size
如果是容器,显示其总文件大小。
22. docker pause
$ docker pause [OPTIONS] CONTAINER[CONTAINER...]
暂停某一容器的所有进程。
23. docker unpause
$ docker unpause [OPTIONS] CONTAINER[CONTAINER...]
取消暂停某一容器的所有进程。
24. docker tag
$ docker tag [OPTIONS] IMAGE[:TAG][REGISTRYHOST/][USERNAME/]NAME[:TAG]
$ docker tag ubuntu:latest laozhu/ubuntu:latest
标记本地镜像,将其归入某一仓库。
-f
强制操作,覆盖已有标记。
25. docker push
$ docker push name[:tag]
$ docker push laozhu/nginx:latest
将镜像推送至远程仓库,可以是
--disable-content-trust
跳过镜像签名。
26. docker logs
docker logs [OPTIONS] CONTAINER docker logs -f -t --tail="10" insane_babbage
获取容器的日志。
-f, --follow
跟踪最近的更新;
--since
某个时间以后的日志
-t, --timestamps
显示日志的时间戳;
--tail=N
仅显示最近N条日志。
27. docker run
$ docker run [OPTIONS] IMAGE [COMMAND][ARG...]
$ docker run -it -a stdin -a stdout ubuntu /bin/bash
$ docker run -it --add-host pubean.com:192.168.1.42 ubuntu cat /etc/hosts
$ docker run -ti --cpuset-cpus="1,3"ubuntu:14.04 /bin/bash $ docker run -ti --cpuset-cpus="0-2" ubuntu:14.04 /bin/bash $ docker run --device=/dev/snd:/dev/snd ... docker run -it --name="nginx-lb" nginx /bin/bash docker run -d ubuntu /usr/bin/top
启动一个容器,并在其中运行指定指令。
-a, --attach
挂载标准数据流,可指定标准输入输出和错误,不指定会默认挂载所有数据流;
-d, --detach
后台运行容器,并打印容器ID;
-i, --interactive
以交互模式运行容器,通常与 -t
同时使用;
-t, --tty
为容器分配一个虚拟终端,通常与 -i
同时使用;
-e, --env
设置容器的环境变量;
--env-file
从文件读取容器的环境变量;
--read-only
以只读模式挂载容器的根目录;
--restart
退出容器时重启之;
--rm
退出容器时销毁之;
--name=
给容器起个名字;
--cidfile
将容器id写入文件;
-u, --user
容器用户,格式如 [:]
;
-h, --hostname
设置容器的主机名『hostname』;
--ulimit
设置容器ulimit值;
-w, --workdir
设置容器的工作目录;
-l, --label
设置容器的元数据;
--label-file
从文件中读取容器的元数据,行分隔文件;
--group-add
为容器增加额外的用户组;
--cpu-shares
CPU周期频率相对权重,默认是1024,可根据需要在[2-1024]间浮动;
--cpuset-cpus
指定容器在CPU运行,支持『1-3』或者『1,4』形式;
--cpuset-mems
指定容器在指定MEM运行,支持『1-2』或者『1,3』形式;
-m, --memory
设置容器物理内存大小;
--memory-reservation=
设置内存保留限制;
--memory-swap
总内存『memory+swap』,设为-1禁用swap内存;
--memory-swappiness
设置容器内存可交换比例,可取[1-100]值;
--kernel-memory
设置内核空间,形如 []
单位是『k,b,m,g』;
-v, --volume
挂载一块空间;
--volume-driver
可选的空间驱动;
--volumes-from
挂载指定某个(些)容器的空间;
--blkio-weight
IO相对权重,默认是500,可根据需要在[10-1000]间浮动;
--device
允许在容器内运行的宿主设备
--network
设置容器网络;
--expose
暴露一个或多个端口;
--link
通过网络连接其他容器;
--add-host
在 /etc/hosts
中增加一条『host-to-ip』映射;
--mac-address
设置容器mac地址,形如『92:d0:c6:0a:29:33』;
--dns 8.8.8.8
自定义容器的DNS服务器,默认和宿主一致;
--dns-opt
自定义容器的DNS选项,默认和宿主一致;
--dns-search example.com
自定义容器的DNS搜索域名,默认和宿主一致;
-P, --publish-all
暴露容器的所有开放端口到随机端口;
-p, --publish
暴露容器的一个或多个端口到宿主端口;
--entrypoint
改写镜像默认的『ENTRYPOINT』值;
--disable-content-trust
跳过镜像签名
--cap-add
增加Linux能力,参考Linux能力列表;
--cap-drop
减少Linux能力,参考Linux能力列表;
--cgroup-parent
自定义容器的父亲cgroup;
--log-driver
自定义容器的log系统;
--log-opt
自定义容器的log选项;
--lxc-conf
增加自定义lxc选项;
--ipc
设置IPC命名空间;
--pid
重设容器进程命名空间;
--uts
设置uts命名空间;
--privileged
给予容器更多的特权;
--security-opt
更多容器安全选项;
--stop-signal
停止容器的信号,默认为『SIGTERM』;
--sig-proxy
将收到的信号转给当前进程;
--oom-kill-disable
禁用OOM Killer;
docker run
- 前台还是后台运行
- 容器id
- 网络设置
- 容器的CPU和内存限制
- 权限和LXC配置
通过 docker run
,镜像使用者可以完全控制容器,可以改写镜像开发者设定的所有参数,这也是为什么 docker run
28. docker attach
$ docker attach [OPTIONS] CONTAINER
$ docker run -d --name topdemo ubuntu /usr/bin/top -b
$ docker attach topdemo
将一个运行中容器挂载到标准数据流,既可查看容器输出,又可与容器进行交互。
--no-stdin
不挂载标准输入『STDIN』;
--sig-proxy
将收到的信号转给当前进程;
29. docker build
$ docker build [OPTIONS] PATH | URL | -
$ docker -t laozhu/nginx:2.0 - < Dockerfile
以 Dockerfile
--force-rm=false
构建失败后移除中间容器;
--no-cache=false
构建过程不适用缓存;
--rm=true
构建成功后移除中间容器;
-t laozhu/nginx:2.0
为创建的容器打上标签。