Docker 容器基本操作

容器生命周期

容器的生命周期是容器可能处于的状态,主要有以下五种:
● created:初建状态
● running:运行状态
● stopped:停止状态
● paused:暂停状态
● deleted:删除状态

容器生命周期 转换关系图


容器操作

初建启动容器

通过 docker create 命令创建的容器是处于初建状态的,需要通过 docker start 命令来启动初建容器;当然我们也可以通过 docker run 命令一步完成容器的初建与启动。

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

$ docker create -it --name=mybb busybox
$ docker ps -a | grep mybb
2c2e919c2d66   busybox   "sh"   33 seconds ago   Created   mybb
$ docker start mybb
等同于
$ docker run -it --name=mybb busybox
终止容器

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

$ docker stop mybb
$ docker ps -a 
CONTAINERID       IMAGE      COMMAND      CREATED           STATUS     PORTS                   NAMES
2c2e919c2d66      busybox    "sh"         26 minutes ago    Exited (137) About a minute ago    mybb
$ docker start mybb
等同于
$ docker restart mybb
进入容器

处于运行状态的容器,可以通过 docker attachdocker execnsenter 等多种方式进入容器。
docker attach:当我们同时使用该命令同时在多个终端运行时,所有的终端窗口将同步显示相同内容,当某个命令行窗口的命令阻塞时,其他命令行窗口同样也无法操作,而且退出不当会导致容器停止,组合键 Ctrl + p + q 才能无损退出。
docker exec:推荐使用,该命令更加灵活方便,可以通过 docker exec -it CONTAINER 方式进入运行中的容器,主要是通过在容器启多一个 sh 进程,保证每个窗口都是独立且互不干扰的,而且避免了退出不当导致容器停止的意外。
nsenter:生产环境上常用,当一些容器内的常规命令非常少,不利于快速分析问题时,使用该命令切换空间后就可以使用容器所在宿主机上的相关命令了;使用方式 nsenter -n -t `docker inspect --format “{{.State.Pid}}” 容器ID`。

$ docker attach 2c2e919c2d66

$ docker exec -it 2c2e919c2d66 sh

$ nsenter -n -t `docker inspect --format "{{.State.Pid}}" 2c2e919c2d66`
删除容器

删除容器的命令使用方式如下:docker rm [OPTIONS] CONTAINER [CONTAINER...]
如果要删除正在运行中的容器,需要带 -f 参数,Docker 会先发送 SIGKILL 信号强制终止正在运行的容器并删除。

$ docker rm 2c2e919c2d66 

$ docker rm -f 2c2e919c2d66 
导出容器

可以使用 docker export CONTAINER 命令导出一个容器到文件,不管此时该容器是否处于运行中的状态。

$ docker export mybb > mybb.tar
导入容器

可以使用 docker import 命令导入并且指定导入的新镜像名称,执行完该命令后,之前导出的文件会变为本地新镜像,最后再使用 docker run 命令启动该镜像,这样就间接实现了容器的迁移。

$ docker import mybb.tar busybox:v1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值