• Docker容器管理


    查看启动的容器

    [root@localhost ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    

    查看所有的容器

    [root@localhost ~]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
    db70bb3f6068        centos              "/bin/bash"         4 weeks ago         Exited (137) 3 weeks ago                       serene_wright
    

    查看本地的镜像列表

    [root@localhost ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
    centos-6-x86        latest              8fca9486a39b        7 days ago          341.3 MB
    centos_with_net     latest              3e8ea8607f08        4 weeks ago         294.9 MB
    centos              latest              9baab0af79c4        5 weeks ago         196.7 MB
    

    新建容器

    [root@localhost ~]# docker create -it centos
    5ae70c73655fc8ec1aae20d01995d422025fd93216436214c8008a4656b4717e
    [root@localhost ~]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
    5ae70c73655f        centos              "/bin/bash"         7 seconds ago                                                      tender_galileo
    db70bb3f6068        centos              "/bin/bash"         4 weeks ago         Exited (137) 3 weeks ago                       serene_wright
    

    使用docker create命令新建的容器处于停止状态(stopped),可以使用docker start命令启动。docker start命令语法格式:docker start container_id

    新建并启动容器

    [root@localhost ~]# docker run -it centos-6-x86 /bin/bash
    [root@d1dec1f9d91e /]# ls
    bin  boot  dev  etc  fastboot  home  lib  lost+found  media  mnt  opt  proc  root  sbin  selinux  srv  sys  tmp  usr  var
    

    docker run命令等价于先执行docker create命令,再执行docker start命令。
    这个命令把两个单独的步骤融合到一起了:
    第一步是使用底层的镜像创建容器,这一步可以单独执行docker create命令完成;
    第二步是启动容器,这一步可以单独执行docker start命令完成。

    • -t标志的作用:让Docker分配一个伪TTY
    • -i标志的作用:告诉Docker,这是个交互会话,让标准输入(STDIN)保持打开状态
      查看内核
    [root@d1dec1f9d91e /]# cat /etc/issue
    CentOS release 6.8 (Final)
    Kernel 
     on an m
    [root@d1dec1f9d91e /]# uname -a
    Linux d1dec1f9d91e 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
    [root@d1dec1f9d91e /]# exit
    exit
    [root@localhost ~]# uname -a
    Linux localhost.localdomain 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
    

    在容器里查看内核,实际就是宿主机的内核。(所有容器共用同一个内核)

    守护态(Daemonized)运行

    添加-d参数实现

    [root@localhost ~]# docker run -itd centos-6-x86 /bin/bash
    359fda80c4ef5c214ffd67bd3c5abdeadfb832ac16849ae0b970d4c81e63e33f
    [root@localhost ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    359fda80c4ef        centos-6-x86        "/bin/bash"         33 seconds ago      Up 32 seconds                           sleepy_mestorf
    

    docker run -d 可以让容器在后台运行,容器启动后返回一个唯一的ID。

    进入容器

    exec命令
    Docker自1.3版本起,提供了exec工具,可直接在容器内运行命令。

    [root@localhost ~]# docker exec -it 359 /bin/bash
    [root@359fda80c4ef /]#
    

    其中,359是容器ID(CONTAINER ID),可简写为前几个字符。
    exec工具语法:docker exec -i -t container_id bash
    可以临时打开一个虚拟终端并且exit后容器依然运行着

    [root@359fda80c4ef /]# exit
    exit
    [root@localhost ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    359fda80c4ef        centos-6-x86        "/bin/bash"         5 minutes ago       Up 5 minutes                            sleepy_mestorf
    

    attach命令

    [root@localhost ~]# docker attach 359
    [root@359fda80c4ef /]# exit
    exit
    [root@localhost ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    

    docker attach命令是Docker自带的命令,其语法为:docker attach container_id。但使用attach命令有时候并不方便。从上面的操作可以看到,exit退出当前终端时,容器就终止了(stopped)。

    获取容器的输出信息

    docker logs命令语法:docker logs CONTAINER_ID
    获取容器的运行历史信息

    停止容器

    使用docker stop来终止一个运行中的容器,命令语法:docker stop container_id
    它会首先向容器发送SIGTERM信号,等待一段时间后(默认为10秒),再发送SIGKILL信号终止容器。
    当Docker容器中指定的应用终结时,容器也自动终止。对于只启动了一个终端的容器,用户通过exit命令或Ctrl+d来退出终端时,所建立的容器立刻终止。

    清除容器

    如果进程出现异常,通常会想立即退出容器。docker kill命令就是为这种需求准备的。用法与docker stop命令类似。

    docker kill container_id

    docker kill命令会直接发送SIGKILL信号来强行终止容器。

    删除容器

    docker rm命令删除处于终止状态(stopped)的容器,docker rmi删除镜像。
    命令格式:docker rm [OPTIONS] container_id
    OPTIONS说明:

    • -f:强行终止并删除一个运行中的容器

    导出容器

    导出一个已经创建的容器到一个文件,不管此时这个容器是否处于运行状态,都可使用docker export命令。
    命令格式:docker export container_id > file.tar

    [root@localhost ~]# docker export db70 > genesis_centos.tar
    [root@localhost ~]# du -sh genesis_centos.tar
    273M    genesis_centos.tar
    

    可将这些文件传输到其他机器上,在其他机器上通过导入命令实现容器的迁移。

    导入容器

    先删除container_id为db70的容器

    [root@localhost ~]# docker rm db70
    db70
    [root@localhost ~]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
    359fda80c4ef        centos-6-x86        "/bin/bash"         4 hours ago         Exited (130) 4 hours ago                       sleepy_mestorf
    d1dec1f9d91e        centos-6-x86        "/bin/bash"         4 hours ago         Exited (0) 4 hours ago                         stoic_curie
    5ae70c73655f        centos              "/bin/bash"         4 hours ago                                                        tender_galileo
    

    导出的文件可以使用docker import命令导入,成为镜像,再用镜像创建容器。
    生成file_test的镜像:cat file.tar |docker import – file_test

    [root@localhost ~]# cat genesis_centos.tar | docker import - genesis_centos
    85bc3a58f1349c173ee4832cbf138720064c99472fa9f2b49531ccef76f97987
    [root@localhost ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
    genesis_centos      latest              85bc3a58f134        3 minutes ago       277.6 MB
    centos-6-x86        latest              8fca9486a39b        8 days ago          341.3 MB
    centos_with_net     latest              3e8ea8607f08        4 weeks ago         294.9 MB
    centos              latest              9baab0af79c4        5 weeks ago         196.7 MB
    
  • 相关阅读:
    解决nodejs使用yarn安装vue-cli提示'vue' 不是内部或外部命令
    转载——java synchronized详解
    转载——Java中this关键字和super关键字的使用
    转载—— JUnit单元测试教程(翻译自Java Code Geeks)
    Usage and Idioms——Use with Maven
    转载——JUnit 5 新特性
    Usage and Idioms——Categories
    转载——单元测试利器 JUnit 4
    Usage and Idioms——Test Fixtures
    深入JUnit源码之Rule
  • 原文地址:https://www.cnblogs.com/Genesis2018/p/9079800.html
Copyright © 2020-2023  润新知