美文网首页
docker 启动容器相关操作

docker 启动容器相关操作

作者: 75221f946ec3 | 来源:发表于2019-03-05 15:44 被阅读0次

    启动容器相关操作:

    运行一个容器

    # 运行容器,并再容器运行后执行pwd命令
    root@jyq-virtual-machine:/# docker run  ubuntu pwd
    Unable to find image 'ubuntu:latest' locally
    latest: Pulling from library/ubuntu
    6cf436f81810: Pull complete 
    987088a85b96: Pull complete 
    b4624b3efe06: Pull complete 
    d42beb8ded59: Pull complete 
    Digest: sha256:7a47ccc3bbe8a451b500d2b53104868b46d60ee8f5b35a24b41a86077c650210
    Status: Downloaded newer image for ubuntu:latest
    /  # pwd命令的输出
    # 容器桩体为exited,说明容器已经退出停止
    root@jyq-virtual-machine:/# docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS                    NAMES
    410e5ec23e74        ubuntu              "pwd"                    8 seconds ago       Exited (0) 7 seconds ago                            upbeat_leakey
    

    在后台运行一个容器

    为了保证提供服务,不能让容器运行后立马退出,所以需要使容器保持常时间运行
    运行容器时使用-d参数可以使容器在后台一直处于运行状态

    root@jyq-virtual-machine:/# docker run -d  ubuntu  /bin/bash -c 'while true; do sleep 1; done'
    0346f58ef16c493be70ff0bc1a29e3c960d587210ea53bd669bcfdfb6ef4bfcd
    root@jyq-virtual-machine:/# docker  ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
    0346f58ef16c        ubuntu              "/bin/bash -c 'while…"   6 seconds ago       Up 5 seconds                                 eloquent_jennings
    

    启动操作系统后必须执行一个可以一直运行的程序,不然即使使用-d参数,操作系统因为没有运行的任务状态将为created,看不出up的状态。

    查看容器运行时执行的历史命令

    注意:history 后面必须是镜像的名称,而不是容器的id

    root@jyq-virtual-machine:/# docker history  ubuntu
    IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
    47b19964fb50        3 weeks ago         /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B                  
    <missing>           3 weeks ago         /bin/sh -c mkdir -p /run/systemd && echo 'do…   7B                  
    <missing>           3 weeks ago         /bin/sh -c rm -rf /var/lib/apt/lists/*          0B                  
    <missing>           3 weeks ago         /bin/sh -c set -xe   && echo '#!/bin/sh' > /…   745B                
    <missing>           3 weeks ago         /bin/sh -c #(nop) ADD file:529264c6593975a61…   88.1MB  
    

    启动容器时给容器命名:

    使用--name 参数在容器启动时给容器命名一个自己容易识别的名称:

    root@jyq-virtual-machine:/# docker  run --name my-web -d -p 8081:80 httpd
    a4eee9b6872928748847db3637cc4087cf5a7db7c91dac609e8c68264abcc101
    root@jyq-virtual-machine:/# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
    a4eee9b68729        httpd               "httpd-foreground"       5 seconds ago       Up 5 seconds        0.0.0.0:8081->80/tcp     my-web
    

    停止一个容器:

    docker stop [长ID|短ID|name]

    • 可以使用容器的长id
      容器启动时输出的ID
    root@jyq-virtual-machine:/# docker  run --name my-web -d -p 8081:80 httpd
    a4eee9b6872928748847db3637cc4087cf5a7db7c91dac609e8c68264abcc101
    
    • 使用短ID:
      使用ps名称查看容器运行状态时的container id 哪一行
    root@jyq-virtual-machine:/# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
    a4eee9b68729        httpd               "httpd-foreground"       5 seconds ago       Up 5 seconds        0.0.0.0:8081->80/tcp     my-web
    
    • 使用容器名称,在启动容器时使用--name指定的名称
    root@jyq-virtual-machine:/# docker stop a4eee9b68729
    a4eee9b68729
    root@jyq-virtual-machine:/# docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                    NAMES
    a4eee9b68729        httpd               "httpd-foreground"       6 minutes ago       Exited (0) 8 seconds ago                             my-web
    
    

    怎么进入一个已经运行的容器:

    • 使用attach命令
    • 使用exec -it 命令
    attach 和exec的区别:
    • attach 会直接连接到系统已经启动的虚拟终端中,可以产看到系统正常运行任务的输出;
    • exec -it 将会重新启动一个进程来启动虚拟终端,不能看到系统正在运行任务的输出;
    • 可以使用docker logs -f container 查看运行容器的输出;

    容器运行分类:

    • 服务类容器,需要一致运行以提供一种服务:
      使用 -d 参数运行容器
    • 工具类容器,只是作为测试或者调试的一种工具使用:
      使用 -it交互的方式启动容器,退出后容器也自动退出

    停止容器、启动容器和重启容器:

    • stop
      停止容器
    • start
      启动容器
    • restart
      重置容器,就是先使用stop停止容器,然后使用start启动容器
    • 容器启动时使用 --reatart=always 时容器能够停止后能够自动启动

    容器的挂起和解除挂起

    • pause
      如果需要做容器快照或者释放主机cpu可以先将容器挂起;
    • unpause
      将一个已经挂起的容器重新启用

    删除容器:

    • rm
      将已经处于exited的容器删除,以释放主机资源。

    创建容器和启动容器:

    • 先使用create命令
      可以使用create命令先创建容器,被创建的容器处于created状态
    • 然后使用start明确启动已经创建的容器
      run命令其实是以上命令的集合

    相关文章

      网友评论

          本文标题:docker 启动容器相关操作

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