[从零开始学容器] 5.容器基本操作

容器是什么

容器是基于镜像创建的可运行实例,并且单独存在,一个镜像可以创建出多个容器。运行容器化环境时,实际上是在容器内部创建该文件系统的读写副本。

容器组成

容器生命周期

根据容器可能处于的状态,分为5种:

  1. created: 初建状态
  2. running: 运行状态
  3. stopped: 停止状态
  4. paused: 暂停状态
  5. deleted: 删除状态

在这里插入图片描述

容器的操作

创建并启动容器

  1. 创建容器, 使用命令docker create,创建容器, 如docker create busybox
  2. 启动容器,启动容器有两种方式:
    • 使用docker start命令基于已经创建好的容器直接启动
    • 使用docker run命令直接基于镜像创建一个容器并启动,相当于执行create后再执行start

使用docker run命令如下:

docker run -it --name=busybox busybox

当使用docker run创建并启动容器时,Docker 后台执行的流程为:

  • Docker 会检查本地是否存在 busybox 镜像,如果镜像不存在则从 Docker Hub 拉取 busybox 镜像;
  • 使用 busybox 镜像创建并启动一个容器;
  • 分配文件系统,并且在镜像只读层外创建一个读写层;
  • 从 Docker IP 池中分配一个 IP 给容器;
  • 执行用户的启动命令运行镜像。

上述命令中, -t 参数的作用是分配一个伪终端,-i 参数则可以终端的 STDIN 打开,同时使用 -it 参数可以让我们进入交互模式

终止容器

使用docker stop命令停止运行容器。命令格式docker stop [-t || --time[=10]]。该命令首先会向运行中的容器发送 SIGTERM 信号,如果容器内 1 号进程接受并能够处理 SIGTERM,则等待 1 号进程处理完毕后退出,如果等待一段时间后,容器仍然没有退出,则会发送 SIGKILL 强制终止容器

进入容器

处于运行状态的容器可以通过docker attachdocker execnsenter等多种方式进入容器.

  1. 使用docker attach进入容器,如 docker attach busybox
    注意:当我们同时使用docker attach命令同时在多个终端运行时,所有的终端窗口将同步显示相同内容,当某个命令行窗口的命令阻塞时,其他命令行窗口同样也无法操作。
  2. 使用docker exec命令进入容器
    Docker 从 1.3 版本开始,提供了一个更加方便地进入容器的命令docker exec,我们可以通过docker exec -it CONTAINER的方式进入到一个已经运行中的容器, 如docker exec -it busybox sh

删除容器

  1. 删除一个停止状态的容器,可以使用docker rm命令删除,如docker rm busybox
  2. 删除一个正在运行中的容器,可以用docker rm -f命令删除,如docker rm -f busybox, 必须添加 -f (或 --force) 参数, Docker 会发送 SIGKILL 信号强制终止正在运行的容器

导出导入容器

导出容器

使用docker export命令导出一个容器导文件,不论容器是否在运行。如docker export busybox > busybox.tar
执行以上命令后会在当前文件夹下生成 busybox.tar 文件,我们可以将该文件拷贝到其他机器上,通过导入命令实现容器的迁移。

导入容器

使用docker export导出的容器,可以使用docker import命令导入,执行完docker import后会变为本地镜像,最后再使用docker run命令启动镜像, 即可完成迁移,如docker import busybox.tar busybox:test

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值