Docker子命令分类
Docker环境信息:info,version
容器生命周期管理:create,exec,kill,pause,restart,rm,run,start,stop,unpause
镜像仓库命令:login,loginout,pull,push,search
镜像管理:build,images,import,load,rmi,save,tag,commit
容器运维操作:attach,export,inspect,port,ps,rename,stats,top,wait,cp,diff
系统日志信息:events,history,logs
1,run
使用run指令,会检查本地是否存在该镜像,如果不存在,则会在云端下载,然后运行。run一
个镜像就会创建一个容器。
—add-host value 添加一个自定义的host-ip到容器的hosts文件中
-a, —attach value 如果在执行run命令时没有指定-a,那么docker默认会挂载所有标准
数据流,包括输入输出和错误。你可以指定某一个标准输出流,如
STDIN, STDOUT or STDERR
—blkio-weight value 阻塞IO,相对值在10到1000
—blkio-weight-device value 针对特定设备的IO加权控制。其格式为DEVICE_NAME:WEIGHT
—cap-add value 添加Linux功能(默认[])
—cap-drop value 删除Linux功能
—cgroup-parent string Optional parent cgroup for the container
—cidfile string 将container ID保存到cid_file,保存的格式长为UUID
—cpu-percent int cpu分配百分比(仅用于windows)
—cpu-period int 用来指定容器对CPU的使用要在多长时间内做一次重新分配,和—
cpu-quota搭配使用,是一个绝对值
—cpu-quota int 用来指定在这个周期内,最多可以有多少时间用来跑这个容器,是一
绝对值
-c, —cpu-shares int cpu利用率权重值,是一个相对值
—cpuset-cpus string 针对多核,指定容器使用指定的CPU
—cpuset-mems string 对具有NUMA拓扑(具有多CPU、多内存节点)的服务器尤其有
用,可以对需要高性能计算的容器进行性能最优的配置
-d, —detach 用容器在后台运行,-d=true或者-d=false
—detach-keys string 覆盖关键的序列分离容器
—device value 添加一个主机设备容器(默认[])
—device-read-bps value 限制此设备上的读速度,单位可以是kb、mb或者gb
—device-read-iops value 通过每秒读IO次数来限制指定设备的读速度
—device-write-bps value 限制此设备上的写速度,单位可以是kb、mb或者gb
—device-write-iops value 通过每秒写IO次数来限制指定设备的写速度
—disable-content-trust 跳过镜像验证(默认true)
—dns value 自定义DNS
—dns-opt value 设置DNS选项
—dns-search value 设置自定义DNS搜索域
—entrypoint string 覆盖默认入口点的镜像,它可以让你的执行程序表现的跟执行程序一
样
-e, —env value 自定义环境变量
—env-file value 读取设置环境变量的文件
—expose value 告诉Docker服务端容器暴露的端口号,供互联系统使用
—group-add value 添加额外的组
—health-cmd string 指令运行检查
—health-interval duration 根据时间周期循环运行指令检查
—health-retries int 连续指定次数指令失败需要报告
—health-timeout duration 最大允许一个检查运行的时间
—help 打印使用
-h, —hostname string 设置容器主机名
-i, —interactive 使用交互模式,始终保持输入流开放
—io-maxbandwidth string 限时系统最大带宽(仅windows)
—io-maxiops uint 最大IOps限制系统的驱动(仅windows)
—ip string 设置容器ipv4地址
—ip6 string 设置容器ipv6地址
—ipc string IPC(POSIX/SysV IPC)命名空间提供了相互隔离的命名共享内存,信
号灯变量和消息队列。共享内存可以提高进程数据交互速度。共享内
存一般用在database和高性能(C/OpenMPI,C++/using boost
libraries)上或者金融服务上。如果需要容器里面部署上述类型的应
用,那么就应该在多个容器直接采取共享内存了
—isolation string 容器隔离技术
—kernel-memory string 内核内存,不会被交换到swap上。一般情况下,不建议修改,可以
直接参考docker的官方文档
-l, —label value 容器设置元数据
—label-file value 读入一行分隔文件标签
—link value 连接另一个容器
—link-local-ip value 设置容器IPv4 / IPv6链接地址
—log-driver string 日志记录驱动的容器
—log-opt value 日志驱动器选项
—mac-address string 设置mac地址
-m, —memory string 设置容器使用的最大内存上限。默认单位为byte,可以使用KG、
M等带单位的字符串。默认情况下,容器可以使用主机上的所有空闲
内存
—memory-reservation string 启用弹性的内存共享,当宿主机资源充足时,允许容器尽量多地使
用内存,当检测到内存竞争或者低内存时,强制将容器的内存降低
到memory-reservation所指定的内存大小。按照官方说法,不设置
此选项时,有可能出现某些容器长时间占用大量内存,导致性能上
的损失。
—memory-swap string 等于内存和swap分区大小的总和,设置为-1时,表示swap分区的大
小是无限的。默认单位为byte,可以使用K、G、M等带单位的字符
串。如果–memory-swap的设置值小于–memory的值,则使用默认
值,为–memory-swap值的两倍
—memory-swappiness int 控制进程将物理内存交换到swap分区的倾向,默认系数为60。系数
越小,就越倾向于使用物理内存。值范围为0-100。当值为100时,
表示尽量使用swap分区;当值为0时,表示禁用容器swap 功能(这
点不同于宿主机,宿主机swappiness 设置为0也不保证swap 不会
被使用),默认为-1
—name string 为容器指定一个名字
--network string 设置容器网络参数。以下参数<br /> 1,none关闭container内的网络连接:将网络模式设置为none时, <br /> 这个container将不允许访问任何外部router。这个container内 <br /> 部只会有一个loopback接口,而且不存在任何可以访问外部网络 <br /> 的router。<br /> 2,bridge通过veth接口来连接contianer默认选项:Docker默认是<br /> 将container设置为bridge模式。此时在host上面讲存在一个<br /> docker0的网络接口,同时会针对container创建一对veth接口。<br /> 其中一个veth接口是在host充当网卡桥接作用,另外一个veth<br /> 接口存在于container的命名空间中,并且指向container的<br /> loopback。Docker会自动给这个container分配一个IP,并且<br /> 将container内的数据通过桥接转发到外部。<br /> 3,host允许container使用host的网络堆栈信息:当网络模式设置为<br /> host时,这个container将完全共享host的网络堆栈。host所有的<br /> 网络接口将完全对container开放。container的主机名也会存在 <br /> 于host的hostname中。这时,container所有对外暴露的port和 <br /> 对其它container的link,将完全失效。 <br /> 4,Container:当网络模式设置为Container时,这个container将完 <br /> 全复用另外一个container的网络堆栈。同时使用时这个container <br /> 的名称必须要符合下面的格式:--net container:<name|id>. 比 <br /> 如当前有一个绑定了本地地址localhost的redis container。如果<br /> 另外一个container需要复用这个网络堆栈--network-alias value 为容器添加network-scoped别名<br /> --no-healthcheck Disable any container-specified HEALTHCHECK<br /> --oom-kill-disable Disable OOM Killer<br /> --oom-score-adj int Tune host's OOM preferences (-1000 to 1000)<br /> --pid string 设置容器的PID模式:host和Note<br /> --pids-limit int 优化容器pids限制(默认为-1)<br /> --privileged 默认情况下container是不能访问任何其他设备的。但是通<br /> 过"privileged",container就拥有了访问任何其他设备的权限。当操<br /> 作者执行docker run --privileged时,Docker将拥有访问host所有设<br /> 备的权限<br /> -p, --publish value 对外映射指定端口,如不指定映射后的端口将随机指定 <br /> -P, --publish-all 发布所有暴露端口随机端口<br /> --read-only 设置fasle。启用后,容器的文件系统将为只读<br /> --restart string 当容器退出或宿主机重启的时候,容器接着会重启操作。重启策略<br /> no - 不重启<br /> on-failure - container推出状态非0时重启<br /> always - 始终重启<br /> --rm 当容器退出时,清除所有该容器的信息<br /> --runtime string 容器运行时使用<br /> --security-opt value 安全选项设置<br /> --shm-size string 设置/dev/shm大小,默认值是64mb<br /> --sig-proxy 代理接收到信号的过程(默认true)<br /> --stop-signal string 容器存储驱动器选项(默认"SIGTERM") <br /> --storage-opt value 容器存储驱动器选项<br /> --sysctl value Sysctl options (default map[])<br /> --tmpfs value Mount a tmpfs directory (default [])<br /> -t, --tty 分配一个伪终端,进行交互操作<br /> --ulimit value --default-ulimit,docker daemon的启动参数,能够指定默认<br /> container ulimit配置。如果此参数没配置,则默认docker daemon<br /> 继承;--ulimit,docker run的参数,能够覆盖docker daemon指定<br /> 的ulimit默认值。如果此参数没配置,则默认从default-ulimit继承<br /> -u, --user string Username or UID (format: <name|uid>[:<group|gid>]) <br /> --userns string User namespace to use<br /> --uts string UTS namespace to use<br /> -v, --volume value 可以使用带有-v 参数的docker run命令给容器添加一个数据卷。<br /> 1.添加数据卷/data1,会自动创建目录<br /> 2.将宿主机的目录添加到容器<br /> --volume-driver string 选择容器挂载的容量<br /> --volumes-from value 从其他容器挂载目录<br /> 1.创建dbdata容器,并含有/data数据卷<br /> 2.创建webserver1挂载dbdata的数据卷<br /> -w, --workdir string 设置容器的工作目录。
2,start
启动一个或多个指定容器。
-a, —attach 如果在执行run命令时没有指定-a,那么docker默认会挂载所有标准
数据流,包括输入输出和错误。你可以指定某一个标准输出流,如
STDIN, STDOUT or STDERR
—detach-keys string 覆盖关键的序列分离容器
—help 打印使用
-i, —interactive 使用交互模式,始终保持输入流开放
3,stop
停止一个或多个指定容器。
—help 打印使用
-t, —time int 停止容器的超时时间(秒),超时后系统将杀死进程(默认10)
4,restart
重新启动一个或多个指定容器。
—help 打印使用
-t, —time int 停止容器的超时时间(秒),超时后系统将杀死进程(默认10)
5,attach
当前 shell 下 attach 连接指定正在运行的容器,观察该容器的运行情况,与容器的主进程进行交互。
docker attach [OPTIONS]
选项:—detach-keys string 覆盖关键的序列分离容器—help 打印使用—no-stdin 不挂载输入流—sig-proxy 默认代理接收系统信息,(除SIGCHLD\SIGKILL\SIGSTOP以外)
注意:当多个窗口同时使用该命令进入该容器时,所有的窗口都会同步显示。如果有一个窗口阻塞了,那么其他窗口也无法再进行操作,所以该指令不适合用于生产环境。退出容器连接不能使用exit指令,因为使用该指令,退出的同时,会停止该容器的运行。键入Ctrl+Q+p能够正常退出。
6,exec
在已存在的容器上运行命令,通过exec命令可以创建两种任务:后台型任务和交互型任务。
docker exec [OPTIONS]

选项:
-d, —detach 分离模式在后台运行的命令
—detach-keys 覆盖关键的序列分离容器
—help 打印使用
-i, —interactive 使用交互模式,始终保持输入流开放
—privileged 给命令扩展的特权
-t, —tty 分配一个伪终端,进行交互操作
-u, —user Username or UID (format:
注意:
采用交互模式指令:docker exec -it
后台指令:docker exec -d
我们可以将exec指令写成shell脚本,方便后面使用。
7,commit
当容器内容被改变后,我们可以通过commit提交一个新的镜像。
-a, —author string 提交的镜像作者
-c, —change value Apply Dockerfile instruction to the created image (default [])
—help 打印使用
-m, —message string 描述
-p, —pause 在commit时,将container 暂停P(默认true)
8,cp
容器和宿主机之间相互拷贝。
-L, —follow-link 始终遵循SRC_PATH符号链接
—help 打印使用
9, create
创建一个新的容器。
