• docker容器


    实验环境

    CentOS 7.5

    容器

    容器是镜像的运行实例。不同的是,镜像是静态的只读文件,而容器带有运行时需要的可写文件层;同时,容器中的应用进程处于运行状态。

    新建容器

    [root@kvm ~]# docker create -it docker.io/centos:7.3.1611
    1cfd243950c3590d642d84c1c71ad3737adb65a74f10b6617bc174e867c02159
    [root@kvm ~]# docker ps -a
    CONTAINER ID        IMAGE                       COMMAND             CREATED             STATUS                         PORTS               NAMES
    1cfd243950c3        docker.io/centos:7.3.1611   "/bin/bash"         11 seconds ago      Created                                            determined_booth
    c086bbf46c29        www.wholj.com:7.2           "/bin/bash"         25 minutes ago      Up 23 minutes                                      epic_hugle
    b9783f331187        www.wholj.com:7.3           "/bin/bash"         About an hour ago   Exited (0) About an hour ago                       nostalgic_rosalind
    e3fabe002814        www.wholj.com:7.3           "/bin/bask"         About an hour ago   Created                                            romantic_montalcini
    0573b7db7f4c        www.wholj.com:7.3           "/bin/bash"         2 days ago          Exited (0) 2 days ago                              determined_heyrovsky
    90d3b762f848        docker.io/centos:7.3.1611   "/bin/bash"         2 days ago          Exited (0) 2 days ago                              amazing_pike
    8b06ff1ad2f5        docker.io/centos:7.3.1611   "/bin/bask"         2 days ago          Created                                            compassionate_ritchie
    cf7b76228bb9        docker.io/centos:7.3.1611   "/bin/bash"         3 days ago          Exited (0) 2 days ago                              elegant_wiles
    e71feffdd925        docker.io/centos:latest     "/bin/bash"         4 days ago          Exited (127) 4 days ago                            sharp_curran
    9217638356cb        docker.io/centos:latest     "/bin/bash"         4 days ago          Exited (0) 4 days ago                              wonderful_franklin
    

    container ID为1cfd243950c3的即为刚新建的容器;使用docker create新建的容器处于停止状态,可以使用docker start命令来启动它。

    启动容器

    [root@kvm ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    c086bbf46c29        www.wholj.com:7.2   "/bin/bash"         36 minutes ago      Up 34 minutes                           epic_hugle
    [root@kvm ~]# docker start 1cfd243950c3
    1cfd243950c3
    [root@kvm ~]# docker ps
    CONTAINER ID        IMAGE                       COMMAND             CREATED             STATUS              PORTS               NAMES
    1cfd243950c3        docker.io/centos:7.3.1611   "/bin/bash"         19 minutes ago      Up 2 seconds                            determined_booth
    c086bbf46c29        www.wholj.com:7.2           "/bin/bash"         44 minutes ago      Up 42 minutes                           epic_hugle
    

    注:命令docker ps可查看当前处于运行状态的容器,docker ps -a查看当前所有容器,包括未运行的容器。

    新建并启动容器

    要想新建并同时启动容器,可用docker run,此命令等价于先执行docker create,再执行docker start
    eg:下面的命令行使用镜像docker.io/centos:latest新建一个ring器并将输出一个“docker test.”,之后容器自动终止:

    [root@kvm ~]# docker run docker.io/centos:latest /bin/echo "docker test."
    docker test.
    

    通过docker ps可看到刚使用docker run新建的容器不在运行容器列表中(列表中不包含IMAGE为docker.io/centos:latest的容器):

    [root@kvm ~]# docker ps
    CONTAINER ID        IMAGE                       COMMAND             CREATED             STATUS              PORTS               NAMES
    1cfd243950c3        docker.io/centos:7.3.1611   "/bin/bash"         31 minutes ago      Up 11 minutes                           determined_booth
    c086bbf46c29        www.wholj.com:7.2           "/bin/bash"         56 minutes ago      Up 54 minutes                           epic_hugle
    

    让容器在后台以守护态运行

    要想让容器在后台以守护态形式运行,可通过-d参数来实现;下边的命令行会让容器在后台运行:

    [root@kvm ~]# docker run -d www.wholj.com:7.2 /bin/sh -c "while true;do echo hello world;sleep 1;done"
    96c3de6f5678ed40c351f8a6a5871053ea42fd9ff4b8da64ac7afd0b8409533d
    [root@kvm ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
    96c3de6f5678        www.wholj.com:7.2   "/bin/sh -c 'while..."   4 seconds ago       Up 3 seconds                            agitated_elion
    

    通过docker ps可查看到此容器处于运行状态。
    注:docker ps命令等价于docker container ls命令。

    查看容器日志

    要想获取容器的输出信息,可通过docker logs CONTAINER_ID来实现。
    命令语法:

    [root@kvm ~]# docker logs --help
    Usage:  docker logs [OPTIONS] CONTAINER
    Fetch the logs of a container
    Options:
          --details        打印详细信息
      -f, --follow         持续输出
          --help           打印帮助信息
          --since string   输出从某个时间开始的日志
          --tail string    输出最近的若干日志
      -t, --timestamps     显示时间戳信息
    

    暂停和停止容器

    主要介绍Docker容器的pause/unpause、stop和prune子命令。

    • 暂停容器
      暂停一个正在运行的容器使用docker pause CONTAINER,命令语法:
    [root@kvm ~]# docker pause --help
    Usage:  docker pause CONTAINER [CONTAINER...]
    Pause all processes within one or more containers
    Options:
          --help   打印帮助信息
    

    查看当前处于运行状态的容器并暂停

    [root@kvm ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
    96c3de6f5678        www.wholj.com:7.2   "/bin/sh -c 'while..."   24 minutes ago      Up 24 minutes                           agitated_elion
    [root@kvm ~]# docker pause 96c3de6f5678
    96c3de6f5678
    [root@kvm ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                   PORTS               NAMES
    96c3de6f5678        www.wholj.com:7.2   "/bin/sh -c 'while..."   24 minutes ago      Up 24 minutes   (Paused)                       agitated_elion
    

    docker ps命令执行返回结果前后的STATUS对比,后者多了一个(Paused),即该容器处于暂停状态。处于paused状态的容器,可以使用docker unpause CONTAINER_ID命令来将之恢复到运行状态:

    [root@kvm ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                   PORTS               NAMES
    96c3de6f5678        www.wholj.com:7.2   "/bin/sh -c 'while..."   31 minutes ago      Up 31 minutes (Paused)                       agitated_elion
    [root@kvm ~]# docker unpause 96c3de6f5678
    96c3de6f5678
    [root@kvm ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
    96c3de6f5678        www.wholj.com:7.2   "/bin/sh -c 'while..."   31 minutes ago      Up 31 minutes                           agitated_elion
    
    • 停止容器
      • 等待一段时间再停止
        停止一个正在运行的容器使用docker stop CONTAINER,命令语法:
    [root@kvm ~]# docker stop --help
    Usage:  docker stop [OPTIONS] CONTAINER [CONTAINER...]
    Stop one or more running containers
    Options:
          --help       打印帮助信息
      -t, --time int   Seconds to wait for stop before killing it (default 10)
    

    该命令首先向容器发送SIGTERM信号,等待一段时间后(-t 参数指定,默认为10s),再发送SIGKILL信号来终止容器。
    当执行了stop命令后,再执行docker container prune命令,会自动清除掉所有处于停止状态的容器。
    * 直接停止容器
    可通过docker kill CONTAINER_ID直接发送SIGKILL信号来强行终止容器。

    [root@kvm ~]# docker kill --help
    Usage:  docker kill [OPTIONS] CONTAINER [CONTAINER...]
    Kill one or more running containers
    Options:
          --help            Print usage
      -s, --signal string   Signal to send to the container (default "KILL")
    
    • 当docker容器中的应用终结后,容器也会自动终止。
  • 相关阅读:
    bzoj4705: 棋盘游戏
    bzoj4709 [jsoi2011]柠檬
    51nod 1411 矩阵取数问题 V3
    51nod1258 序列求和V4
    51nod 1348 乘积之和
    PostgreSQL Replication之第九章 与pgpool一起工作(3)
    PostgreSQL Replication之第九章 与pgpool一起工作(2)
    PostgreSQL Replication之第九章 与pgpool一起工作(1)
    PostgreSQL Replication之第八章 与pgbouncer一起工作(5)
    PostgreSQL Replication之第八章 与pgbouncer一起工作(4)
  • 原文地址:https://www.cnblogs.com/wholj/p/10329491.html
Copyright © 2020-2023  润新知