美文网首页
04 Docker 容器基本操作

04 Docker 容器基本操作

作者: 托瓦斯克一 | 来源:发表于2021-01-04 22:03 被阅读0次

    容器生命周期

    容器的生命周期是容器可能处于的状态,主要有以下五种:
    ● 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
    

    相关文章

      网友评论

          本文标题:04 Docker 容器基本操作

          本文链接:https://www.haomeiwen.com/subject/qnzvoktx.html