• 容器


    01.如何运行容器
    #启动容器 -d 后台,--name指定容器运行的名称
    root@ubuntu:~# docker run   --name "my_httpd_server" -d httpd
    8bd623b3e7b88c585f99aeab17e97c597e2e0193d65f581a61d0c58ebb0d6043
    #查看容器
    root@ubuntu:~# docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                            PORTS                    NAMES
    8bd623b3e7b8        httpd               "httpd-foreground"       22 seconds ago      Up 20 seconds                     80/tcp                   my_httpd_server
    #干掉容器 短ID=长ID的前12位  如何指定容器:1)长ID 2)短ID 3)name
    root@ubuntu:~# docker stop 8bd623b3e7b8
    8bd623b3e7b8
    
    02.进入容器
    #运行一个
    docker run -d centos /bin/bash -c "while true;do sleep 1;echo hha;done"
    #attached进入 attach 直接进入容器 启动命令 的终端,不会启动新的进程
    docker attach a4967bf73180af7f5a02f9fa464bb50d46798060ae57b427e000dfb7d4f03f64
    #exec进入 exec 则是在容器中打开新的终端,并且可以启动新的进程
    docker exec -it  a4967bf73180af7f5a02f9fa464bb50d46798060ae57b427e000dfb7d4f03f64
    #查看log
    docker logs -f a4967bf73180af7f5a02f9fa464bb50d46798060ae57b427e000dfb7d4f03f64
    
    03.容器运行的最佳实践
    按用途容器大致可分为两类:服务类容器和工具类的容器
    A.服务类容器以 daemon 的形式运行,对外提供服务。比如 web server,数据库等。通过 -d 以后台方式启动这类容器是非常合适的。如果要排查问题,可以通过 exec -it 进入容器。
    B.工具类容器通常给能我们提供一个临时的工作环境,通常以 run -it 方式运行,比如
    
    04.docker create start stop restart pause unpause  rm/rmi 
    --restart=always 意味着无论容器因何种原因退出(包括正常退出),就立即重启。该参数的形式还可以是 --restart=on-failure:3,意思是如果启动进程退出代码非0,则重启容器,最多重启3次。
    
    下面是容器的常用操作命令:
    
    create      创建容器  
    run         运行容器  
    pause       暂停容器  
    unpause     取消暂停继续运行容器  
    stop        发送 SIGTERM 停止容器  
    kill        发送 SIGKILL 快速停止容器  
    start       启动容器  
    restart     重启容器  
    attach      attach 到容器启动进程的终端  
    exec        在容器中启动新进程,通常使用 "-it" 参数  
    logs        显示容器启动进程的控制台输出,用 "-f" 持续打印  
    rm          从磁盘中删除容器
    
    05.限制对内存的使用
    内存限额
    与操作系统类似,容器可使用的内存包括两部分:物理内存和 swap。 Docker 通过下面两组参数来控制容器内存的使用量。
    
    -m 或 --memory:设置内存的使用限额,例如 100M, 2G。
    
    --memory-swap:设置 内存+swap 的使用限额。
    
    当我们执行如下命令:
    
    docker run -m 200M --memory-swap=300M ubuntu
    
    其含义是允许该容器最多使用 200M 的内存和 100M 的 swap。默认情况下,上面两组参数为 -1,即对容器内存和 swap 的使用没有限制。
    
    06.限制对CPU的使用
    Docker 可以通过 -c 或 --cpu-shares 设置容器使用 CPU 的权重。如果不指定,默认值为 1024。
    
    与内存限额不同,通过 -c 设置的 cpu share 并不是 CPU 资源的绝对数量,而是一个相对的权重值。某个容器最终能分配到的 CPU 资源取决于它的 cpu share 占所有容器 cpu share 总和的比例。
    
    换句话说:通过 cpu share 可以设置容器使用 CPU 的优先级。
    
    比如在 host 中启动了两个容器:
    
    docker run --name "container_A" -c 1024 ubuntu
    docker run --name "container_B" -c 512 ubuntu
    
    container_A 的 cpu share 1024,是 container_B 的两倍。当两个容器都需要 CPU 资源时,container_A 可以得到的 CPU 是 container_B 的两倍。
    
    07.限制容器的BLOCK IO
    Block IO 是另一种可以限制容器使用的资源。Block IO 指的是磁盘的读写,docker 可通过设置权重、限制 bps 和 iops 的方式控制容器读写磁盘的带宽,下面分别讨论。
    
    注:目前 Block IO 限额只对 direct IO(不使用文件缓存)有效。
    
    block IO 权重
    默认情况下,所有容器能平等地读写磁盘,可以通过设置 --blkio-weight 参数来改变容器 block IO 的优先级。
    
    --blkio-weight 与 --cpu-shares 类似,设置的是相对权重值,默认为 500。在下面的例子中,container_A 读写磁盘的带宽是 container_B 的两倍。
    
    docker run -it --name container_A --blkio-weight 600 ubuntu   
    docker run -it --name container_B --blkio-weight 300 ubuntu
    
    08.底层实现技术
    cgroup 全称 Control Group。Linux 操作系统通过 cgroup 可以设置进程使用 CPU、内存 和 IO 资源的限额。/sys/fs/cgroup/下有container的ID
    namespace 管理着 host 中全局唯一的资源,并可以让每个容器都觉得只有自己在使用它。换句话说,namespace 实现了容器间资源的隔离。
    

      

  • 相关阅读:
    设计模式----工厂模式
    设计模式----简单工厂
    log4net使用详解
    link/Extended dependency 无法显示连接
    Abp框架之执行Update-Database 命令系列错误
    Index API
    使用Java客户端操作elasticsearch(二)
    elasticsearch之分词插件使用
    使用Java Low Level REST Client操作elasticsearch
    js如何获取隐藏的元素的高度
  • 原文地址:https://www.cnblogs.com/wanyp/p/7226606.html
Copyright © 2020-2023  润新知