|
二、Docker指令集
#由于有一部分指令用到了dockerfile,所以不懂的话,请首先查看dockerfile配置指南一节
attach: docker attach 允许进入或者直接操作容器
语法:docker attach [OPTIONS] CONTAINER
配置指令:
--help 查看帮助
--no-stdin=false
--sig-proxy=true
用法示例:
[iyunv@localhost ~]# ID=$(docker run -d centos /usr/bin/top -b)
[iyunv@localhost ~]# docker attach $ID
top - 06:10:43 up 66 days, 5:00, 0 users, load average: 0.27, 0.08, 0.10
Tasks: 1 total, 1 running, 0 sleeping, 0 stopped, 0 zombie
%Cpu(s): 3.7 us, 3.7 sy, 0.0 ni, 88.0 id, 4.7 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 16123532 total, 1002016 free, 9646844 used, 5474672 buff/cache
KiB Swap: 32766968 total, 32103200 free, 663768 used. 6010068 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 51692 1904 1456 R 0.0 0.0 0:00.01 top
build: 从指定路径(URL,dockerfile)创建一个新的镜像
语法:docker build [OPTIONS] PATH | URL | -
配置指令:
-f --file=PATH/Dockerfile #指定dockerfile文件路径,dockerfile语法和内容,请参考Docker配置指南(三):Dockerfile
--rm=true|false #默认为true,在构建完成后,删除依赖中间容器
--force-rm=true|false #默认为false,如果为true,构建无论成功都会强制删除中间容器
--no-cache=true|false #创建镜像时默认不使用缓存
--help #查看帮助
--pull=true|false #默认为false,为true则总是试图获取最新的镜像
-q --quiet=true|false #默认为false,为true时不显示详细输出
-t, --tag="" #构建成功后,新的镜像会携带此标记
-m, --memory=MEMORY #指定使用物理内存上限
--memory-swap=MEMORY-SWAP #含swap的总内存上限,-1不使用swap
-c, --cpu-shares=0 #配置docker容器cpu的权重,默认为0,权重相同。有关资源分配方面的资料,感兴趣的可以自己查看docker的资源分配原理(基于Cgroup)。
--cpu-period=0 #指定容器对CPU的使用要在多长时间内做一次重新分配,和--cpu-quota一样,是一个完全公平的调度方法
--cpu-quota=0 #指定在这个周期内,最多可以有多少时间用来跑这个容器,同--cpu-shares不同,这种配置比较固定,容器使用的CPU资源是不会超过这个值的,没有弹性。
--cpuset-cpus=CPUSET-CPUS #允许使用的CPU编号(0-3或0,1两种写法)
--cpuset-mems=CPUSET-MEMS #只在NUMA系统有效
--cgroup-parent=CGROUP-PARENT #使用已创建的容器cgroup路径,如果不存在,则会新创建
用法示例:docker build Dockerfile_PATH | URL
commit: 提交已改动的镜像
语法:[-a|--author[=AUTHOR]] [--help] [-c|--change[= []]] [-m|--message[=MESSAGE]] [-p|--pause*[=*true]] CONTAINER [REPOSITORY[:TAG]]
配置指令:
--help #查看帮助
-a --author="" #作者
-c --change=[] #在提交镜像时使用指定的dockerfile指令,支持类型有:CMD|ENTRYPOINT|ENV|EXPOSE|ONBUILD|USER|VOLUME|WORKDIR
-m --message="" #提交说明信息
-p --pause==true|false #默认为true,在commit的时候暂停服务
用法示例:
docker commit -a 'user@domain.com' -m 'some massages' CONTAINER_ID REPOSITORY:TAG
cp: 将文件或目录从容器内拷贝到宿主机,使用"-"可以将数据输出为一个tar文件
语法:docker cp [--help] CONTAINER:PATH HOSTDIR|-
配置指令:
--help #查看帮助
用法示例:
docker cp CONTAINER_ID:PATH HOSTDIRPATH
create: 创建一个新的容器
语法: docker create [-a|--attach[=[]]] [--add-host[=[]]] [--blkio-weight[=[BLKIO-WEIGHT]]] [-c|--cpu-shares[=0]] [--cap-add[=[]]] [--cap-drop[=[]]] [--cidfile[=CIDFILE]]
[--cpu-period[=0]] [--cpuset-cpus[=CPUSET-CPUS]] [--cpuset-mems[=CPUSET-MEMS]] [--cpu-quota[=0]] [--device[=[]]] [--dns-search[=[]]] [--dns[=[]]] [-e|--env[=[]]] [--entry-
point[=ENTRYPOINT]] [--env-file[=[]]] [--expose[=[]]] [-h|--hostname[=HOSTNAME]] [--help] [-i|--interactive[=false]] [--ipc[=IPC]] [-l|--label[=[]]] [--label-file[=[]]]
[--link[=[]]] [--lxc-conf[=[]]] [--log-driver[=[]]] [--log-opt[=[]]] [-m|--memory[=MEMORY]] [--memory-swap[=MEMORY-SWAP]] [--mac-address[=MAC-ADDRESS]] [--name[=NAME]]
[--net[="bridge"]] [--oom-kill-disable[=false]] [-P|--publish-all[=false]] [-p|--publish[=[]]] [--pid[=[]]] [--uts[=[]]] [--privileged[=false]] [--read-only[=false]]
[--restart[=RESTART]] [--security-opt[=[]]] [-t|--tty[=false]] [-u|--user[=USER]] [-v|--volume[=[]]] [--volumes-from[=[]]] [-w|--workdir[=WORKDIR]] [--cgroup-parent[=CGROUP-PATH]]
IMAGE [COMMAND] [ARG...]
配置指令:
-a, --attach=[] #附加到stdin,stdout或stderr
--add-host=[] #自定义一个主机到IP的映射
--blkio-weight=0 #block IO权重,可配置范围是10-1000
-c, --cpu-shares=0 #CPU相对权重
--cap-add=[] #添加Linux capabilities
--cap-drop=[] #去除linux capabilities
--cidfile="" #将container id写入到文件
--cgroup-parent --cpu-peroid=0 --cpuset-cpus="" --cpuset-mems="" -cpu-quota=0 -m, --memory="" --memory-swap="" #这几个选项在build指令中已经有介绍
--device=[] #为容器添加一个主机设备 (e.g. --device=/dev/sdc:/dev/xvdc:rwm)
-dns-search=[] #设置自定义DNS搜索域 (如果不想使用此功能,使用此配置: --dns-search=. )
--dns=[] #设置DNS服务器
-e, --env=[] #设置环境变量
--entrypoint="" #请参考Docker配置指南(三):Dockerfile
--env-file=[] #在以行分隔的文件中读取变量
--expose=[] #暴露一个或范围内的端口
-h, --hostname="" #设置容器的主机名
--help #查看帮助
-i, --interactive=true|false #默认为false,即使没有连接也保持标准输入开启
--ipc="" #默认是为容器创建一个私有 的命令空间;
’container:<name|id>’: 复用其它容器的共享内存、消息队列和信号
’host’: 在容器内使用主机的共享内存、消息队列和信号;注意:主机模式将会给容器完全访问共享内存的权限,因此被认为是不安全的
-l, --label=[] #添加一个键值对格式的标签
--label-file=[] #从一个文件中读取标签,每一个EOL分隔一个标签
--link=[] #以别名或者ID的方式添加一个到其它容器的链接
--lxc-conf=[] #lxc自定义配置,如--lxc-conf=[lxc.cgroup.cpuset.cpus = 0,1]
--log-driver="|json-file|syslog|journald|none" #设置日志驱动,默认为json-file,docker logs命令只支持json-file日志驱动
--log-opt=[] #设置日志配置选项
--mac-address="" #设置MAC地址
--name="" #为容器分配一个名称
--net="bridge" #为容器配置网络模式,主要有以下几种模式:
’bridge’: 为容器创建一个新的桥接网络
’none’: 不为容器配置网络
’container:<name|id>’: 复用其它容器的网络
’host’: 在容器内使用主机的网络堆栈,同样,这种主机模式将会给容器完全访问本地系统服务的权限,因此被认为是不安全的
--oom-kill-disable=true|false #一种linux的内存优化机制,当申请内存后使用时,发现空间不足,则会触发这种机制,大致以先进先出和其存活时长为判断依据,将这部分内存释放后再分配
-P, --publish-all=true|false #默认为false,发布所有端口暴露到主机上网络接口的随机端口
-p, --publish=[] #发布一个或多个容器的端口到主机上,格式为:ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort | containerPort
--pid=host #设置容器PID模式,host是指在容器内使用主机的PID命名空间
--uts=host #设置容器UTS模式,host是指在容器内使用主机的UTS命名空间
--privileged=true|false #默认为false,给予此容器扩展权限
--read-only=true|false #默认为false,给予此容器只读权限
--restart="no" #当容器退出时重启策略(no, on-failure[:max-retry], always)
--security-opt=[] #安全配置
-t, --tty=true|false #默认为false,分配一个伪tty
-u, --user="" #用户名或是用户ID
-v, --volume=[] #绑定半挂载一个卷(例如, from the host: -v /host:/container, from Docker: -v /container)
--volumes-from=[] #从指定的容器挂载卷
-w, --workdir="" #指定容器工作目录
diff: 检查容器上文件系统的变化
语法:docker diff [--help] CONTAINER
events: 从服务器获取实时消息
语法:docker events [--help] [-f|--filter[=[]]] [--since[=SINCE]] [--until[=UNTIL]]
配置指令:
--help #查看帮助
-f --filter=[] #指定过滤条件
--since="" #指定开始时间戳
--until="" #指定结束时间戳
exec: 在一个运行中的容器内执行命令
语法:docker exec [-d|--detach[=false]] [--help] [-i|--interactive[=false]] [-t|--tty[=false]] [-u|--user[=USER]] CONTAINER COMMAND [ARG...]
配置指令:
-d --detach=true|false #默认false,分离模式,在后台执行命令
--help #查看帮助
-i, -interactive=true|false #默认为false,即使没有连接也保持标准输入开启
-t, --tty=true|false #默认为false,分配一个伪tty
-u, --user="" #设置用户名或UID,也可以扩展配置GROUP或者GID,类似于:user:group
history: 查看镜像历史(创建,修改)
语法:docker history [--help] [--no-trunc[=false]] [-q|--quiet[=false]] IMAGE
配置指令:
--help #查看帮助
-H --human=true|false #默认为true,人性化显示
--no-trunc=true|false #默认为false,不要截断输出,配置为true会显示完整的镜像信息
-q --quiet=true|false #默认为false,配置为true时只显示ID信息
images: 列出所有镜像
语法:docker images [--help] [-a|--all[=false]] [--digests[=false]] [-f|--filter[=[]]] [--no-trunc[=false]] [-q|--quiet[=false]] [REPOSITORY]
配置指令:
-a, --all=true|false #默认为false,默认只显示中间层镜像
--digests=true|false #默认为false,为true时显示摘要信息
-f --filter=[] #过滤输出条件,比如可以根据标签查找
--help #查看帮助
--no-trunc=true|false #默认为false,不要截断输出,配置为true会显示完整的镜像信息
-q --quiet=true|false #默认为false,配置为true时只显示ID信息
import: 从一个tar包创建镜像
语法:docker import [-c|--change[= []]] [--help**] URL|- [REPOSITORY[:TAG]]
配置指令:
-c=[] #指定dockerfile配置指令,支持类型有"CMD|ENTRYPOINT|ENV|EXPOSE|ONBUILD|USER|VOLUME|WORKDIR"
用法示例:
docker import http://example.com/exampleimage.tgz example/imagerepo #从一个远程地址导入
cat exampleimage.tgz | docker import - example/imagelocal #从一个本地文件导入
tar -c . | docker import -c="ENV DEBUG true" exampleimagedir #从一个本地目录导入,并传入dockerfile指令
info: 输出系统侧信息
语法:docker info [--help]
inspect: 输出更底层的docker镜像或容器信息,返回的是一个json格式的字符串
语法:docker inspect [--help] [-f|--format[=FORMAT]] CONTAINER|IMAGE [CONTAINER|IMAGE...]
配置指令:
--help #查看帮助
-f, --format="" #可以根据返回内容进行过滤,不过需要使用go语言格式
kill: 使用kill标记杀掉一个正在运行的容器,默认为SIGKILL
语法:docker kill [--help] [-s|--signal[="KILL"]] CONTAINER [CONTAINER...]
配置指令:
--help #查看帮助
-s, --signal="KILL" #使用指定kill信号
load: 加载一个打包好的镜像
语法:docker load [--help] [-i|--input[=INPUT]]
--help #查看帮助
-i, --input="" #从一个tar包中的档案信息读取
login: 注册或登录到一个docker仓库/注册中心
语法:docker login [-e|--email[=EMAIL]] [--help] [-p|--password[=PASSWORD]] [-u|--username[=USERNAME]] [SERVER]
配置指令:
-e, --email="" #邮箱
--help #查看帮助
-p, --password="" #用户名
-u, --username="" #密码
logout: 从一个docker仓库/注册中心登出
语法:docker logout [SERVER]
logs: 取出一个容器的日志
语法:docker logs [-f|--follow[=false]] [--help] [--since[=SINCE]] [-t|--timestamps[=false]] [--tail[="all"]] CONTAINER
配置指令:
--help #查看帮助
-f, --follow=true|false #默认为false,跟踪日志输出
--since="" #显示从指定时间戳开始的日志
-t, --timestamps=true|false #默认为false,显示时间戳
--tail="all" #在日志尾部显示行数,默认为所有日志
|
|