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 为容器指定一个名字

    1. --network string 设置容器网络参数。以下参数<br /> 1none关闭container内的网络连接:将网络模式设置为none时, <br /> 这个container将不允许访问任何外部router。这个container <br /> 部只会有一个loopback接口,而且不存在任何可以访问外部网络 <br /> router。<br /> 2bridge通过veth接口来连接contianer默认选项:Docker默认是<br /> container设置为bridge模式。此时在host上面讲存在一个<br /> docker0的网络接口,同时会针对container创建一对veth接口。<br /> 其中一个veth接口是在host充当网卡桥接作用,另外一个veth<br /> 接口存在于container的命名空间中,并且指向container的<br /> loopbackDocker会自动给这个container分配一个IP,并且<br /> container内的数据通过桥接转发到外部。<br /> 3host允许container使用host的网络堆栈信息:当网络模式设置为<br /> host时,这个container将完全共享host的网络堆栈。host所有的<br /> 网络接口将完全对container开放。container的主机名也会存在 <br /> hosthostname中。这时,container所有对外暴露的port <br /> 对其它containerlink,将完全失效。 <br /> 4Container:当网络模式设置为Container时,这个container将完 <br /> 全复用另外一个container的网络堆栈。同时使用时这个container <br /> 的名称必须要符合下面的格式:--net container:<name|id>. <br /> 如当前有一个绑定了本地地址localhostredis container。如果<br /> 另外一个container需要复用这个网络堆栈
    2. --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]

    Docker指令 - 图1

    选项:
    -d, —detach 分离模式在后台运行的命令
    —detach-keys 覆盖关键的序列分离容器
    —help 打印使用
    -i, —interactive 使用交互模式,始终保持输入流开放
    —privileged 给命令扩展的特权
    -t, —tty 分配一个伪终端,进行交互操作
    -u, —user Username or UID (format: [:])
    注意:
    采用交互模式指令:docker exec -it ‘操作指令’
    后台指令:docker exec -d ‘操作指令’。该命令会在daemon_dave容器内创建了一个空文件,文件名为/etc/new_config_file,我们可以在正在运行的容器中进行维护、监控及管理任务。
    我们可以将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
    创建一个新的容器。