容器

把镜像运行起来的东西叫容器。

生命周期

  • create 创建容器,但不启动它。
  • rename 重命名容器。
  • run 创建并启动容器。
  • [-p|--publish] host_port:container_port 将本机的端口流量转发到容器的对应端口中。
  • [-d|--detach] 在后台运行这个容器。
  • --name 为容器指定一个名字。
  • -i 交互式操作
  • -t 终端
  • --rm 容器退出就就将其删除,可以有效的节省资源
  • rm 删除容器。
  • update 调整容器的资源限制。

    启动和停止

  • start 启动已存在的容器。

  • stop 停止运行中的容器
  • restart 重启容器。
  • pause 暂停运行中的容器,将其「冻结」在当前状态。
  • unpause 结束容器暂停状态。
  • wait 阻塞地等待某个运行中的容器直到停止。
  • kill 想运行中的容器发送 SIGKILL 指令。
  • attach 连接到运行中的容器。

    信息

  • ps 查看运行中的所有容器。

  • -a | --all : 查看所有容器,包括没有运行的。
  • logs 从容器中读取日志。(你也可以使用自定义日志驱动,不过在 1.10 中,它只支持 json-filejournald)。
  • inspect 查看某个容器的所有信息(包括 IP 地址)。
  • events 从容器中获取事件 (events)。
  • port 查看容器的公开端口。
  • top 查看容器中活动进程。
  • stats 查看容器的资源使用量统计信息。
  • diff 查看容器文件系统中存在改动的文件。

    导入 / 导出

  • cp 在容器和本地文件系统之间复制文件或目录。

  • export 将容器的文件系统打包为归档文件流 (tarball archive stream) 并输出至标准输出 (STDOUT)。

    执行命令

  • exec 在容器内执行命令。

例如,进入正在运行的 foo 容器,并连接 (attach) 到一个新的 Shell 进程:exec -it foo /bin/bash

镜像

  • docker image

  • ls 等同于 docker images

  • rm [name|sha|id] 删除本地镜像。

注意删除中 Untagged 和 Deleted 的区别

生命周期

  • pull 拉取镜像
  • images 查看所有镜像。
  • -q 只列出 image Id
  • --format <form> 以特定的格式列出,这种用到 GO 的模板语法
  • --digests 显示摘要
  • import 从归档文件创建镜像。
  • build 从 Dockerfile 创建镜像。
  • -t|--tag 为构建的镜像命名,如 nginx:v3 。后面的标签(v3)是可选项。
  • -f 指定某个文件为 Dockerfile 文件
  • commit 为容器创建镜像,如果容器正在运行则会临时暂停。
  • rmi 删除镜像。
  • load 从标准输入 (STDIN) 加载归档包 (tar archive) 作为镜像,包括镜像本身和标签 (tags, 0.7 )。
  • save 将镜像打包为归档包,并输出至标准输出 (STDOUT),包括所有的父层、标签和版本 (parent layers, tags, versions, 0.7 起)。

    其它信息

  • history 查看镜像的历史记录。

  • tag 给镜像打标签命名(本地或者仓库均可)。

    卷标(Volumes)

    的卷标 (volumes) 是 独立的文件系统。它们并非必须连接到特定的容器上。

    生命周期

  • volume create

  • volume rm

    信息

  • volume ls

  • volume inspect

卷标在不能使用链接(只有 TCP/IP)的情况下非常有用。例如,如果你有两个 实例需要通讯并在文件系统上留下记录。
因为卷标是独立的文件系统,它们通常被用于存储各容器之间的瞬时状态。也就是说,你可以配置一个无状态临时容器,关掉之后,当你有第二个这种临时容器实例的时候,你可以从上一次保存的状态继续执行。

另外一些命令

  • docker system df 将显示当前 Docker 各部分占用的磁盘空间。
  • docker [image|system|volume|network|container] prune 清理一些已经过期的数据,比如清理 虚悬镜像。

    骚操作

    利用 ls 来将 image 全部删除: ``` $ docker image rm $(docker image ls -q)

```