概念

  • 容器是独立运行的一个或一组应用,以及它们的运行态环境

  • 虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用

启动容器

  1. # 基于某个镜像启动
  2. docker run <image>:<tag>
  3. # 启动一个已经停止的容器
  4. docker container start <容器ID>

守护态运行

  • 指将容器运行在后台,而不是直接将执行命令的结果输出在宿主机下
  • 通过 -d 参数实现,返回容器ID,容器容器可采用 docker container logs [container ID or NAMES] 查看
  1. # 简单示例,非后台运行
  2. docker run ubuntu:18.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
  3. # 后台运行
  4. docker run -d ubuntu:18.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"

进入容器

  • attachexec 均可进入一个在后台运行的容器

  • exec 为更加推荐的方式

    • -t: 分配伪终端
    • -i: 可使用 linux 命令
  1. # 447732d6511940a5fc84b29a38350f9bf837f0285ef9308db513f9af528af997
  2. docker run -dit ubuntu:18.04
  3. # attach 方式进入 , 执行 exit 将导致容器终止
  4. docker attach 447732
  5. # exec 方式进入, 执行 exit 不会导致容器终止
  6. docker exec -it 447732 bash

终止与重启容器

  • 额外:容器中指定的应用终结时,容器也自动终止
  1. # 终止某个运行中的容器
  2. docker container stop <容器ID>
  3. # 重启某个容器(先终止,再启动)
  4. docker container restart <容器ID>

删除容器

  1. # 单个删除
  2. docker container rm <容器ID>/<容器名称>
  3. # 全部删除
  4. docker container prune

导出

  1. # 导出容器快照到本地
  2. $ docker container ls -a
  3. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  4. 7691a814370e ubuntu:18.04 "/bin/bash" 36 hours ago Exited (0) 21 hours ago test
  5. $ docker export 7691a814370e > ubuntu.tar

导入

  • docker load : 导入镜像存储文件到本地镜像库, 保存完整记录,体积大

  • docker import : 导入一个容器快照到本地镜像库, 丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态), 但可以重新指定标签等元数据信息

  1. # 从容器快照导入为镜像
  2. $ cat ubuntu.tar | docker import - test/ubuntu:v1.0
  3. $ docker image ls
  4. REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
  5. test/ubuntu v1.0 9d37a6082e97 About a minute ago 171.3 MB