美文网首页
docker 容器管理应用

docker 容器管理应用

作者: 霸道ki | 来源:发表于2020-03-11 17:05 被阅读0次

    0. 容器常用命令及选项

    0.1 创建容器常用选项

    图片.png

    0.2 容器资源限制常用选项

    图片.png

    0.3 常用选项

    图片.png

    1. 创建容器

    Usage:  docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]
    
    -i:交互式
    -t:分配伪终端
    -d:运行容器到后台
    -p [宿主机]:[容器] :暴露端口
    -h:主机名
    --name:容器名字
    
    // 应用
    # 简单创建
    docker container run -d nginx
    # 创建一个主机名为 nginx_web、环境变量 name=zun、容器名为 nginx 后台运行的容器
    docker run -d -p 8080:80 --name=nginx -e age=18 -h nginx_web nginx
    测试:
    curl 172.16.1.16:8080   -- 172.16.1.16 为宿主机
    

    2. 列出容器

    docker ps
    docker container ls
    
    # 获取全部容器的ID
    docker ps -aq
    
    

    3. 查看容器的信息

    # 根据容器 ID 查看容器信息
    docker ps   -- 获取容器 ID
    docker container inspect 01d4364252c5|more
    
    # dns 信息
    "ResolvConfPath": "/var/lib/docker/containers/01d4364252c5cb4d4918231122e1a30baa7145f2a2daaa3922fd8ba5
    a106cd2c/resolv.conf",
    # 主机名信息
    "HostnamePath": "/var/lib/docker/containers/01d4364252c5cb4d4918231122e1a30baa7145f2a2daaa3922fd8ba5a1
    06cd2c/hostname",
    # ip 地址信息
    "HostsPath": "/var/lib/docker/containers/01d4364252c5cb4d4918231122e1a30baa7145f2a2daaa3922fd8ba5a106cd2c/hosts",
    # 日志信息
    "LogPath": "/var/lib/docker/containers/01d4364252c5cb4d4918231122e1a30baa7145f2a2daaa3922fd8ba5a106cd2c/01d4364252c5cb4d4918231122e1a30baa7145f2a2daaa3922fd8ba5a106cd2c-json.log"
    
    # 网关
    "Gateway": "172.17.0.1",
    # ip地址
    "IPAddress": "172.17.0.2"
    

    4. 在运行的容器中执行命令

    Usage:  docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
    COMMAND:bash/sh
    
    docker ps
    docker exec -it 01d4364252c5 bash
    

    5. 查看日志

    Usage:  docker logs [OPTIONS] CONTAINER
    
    //方法一
    docker logs 9f4c6393e470 -f
    //方法二
    docker container inspect 9f4c6393e470 |grep json.log
    tail /var/lib/docker/containers/9f4c6393e470e29d8866fe72691246096bf8841584ff2094a0d6199fa10efe4d/9f4c6393e470e29d8866fe72691246096bf8841584ff2094a0d6199fa10efe4d-json.log -f
    

    6. 资源限制

    // 内存限制
    [root@muban ~]# docker container run --help |grep memo
          --kernel-memory bytes            Kernel memory limit
      -m, --memory bytes                   Memory limit -- 最大内存使用量
          --memory-swap bytes              Swap limit equal to memory plus swap: '-1' to enable unlimited swap                  -- 允许交换到磁盘的内存量
          --memory-swappiness int          Tune container memory swappiness (0 to 100) (default -1)                           -- 容器使用SWAP分区交换的百分比(0-100,默认为-1)          
    
    # 创建一个最大内存使用量为 0.5G 的容器
    docker container run -d -m 0.5G nginx
    
    // 禁用OOM Killer
    –oom-kill-disable   -- 当内存使用过大时,自动释放某些程序的资源
    docker container run -d -m 100M --oom-kill-disable nginx
    
    ps: 通过设置--oom-kill-disable选项来禁止 OOM killer 杀死容器内进程。但请确保只有在使用了-m/--memory选项时才使用--oom-kill-disable禁用 OOM killer。如果没有设置-m选项,却禁用了 OOM-killer,可能会造成出现 out-of-memory 错误时,系统通过杀死宿主机进程或获取更改内存
    
    // cpu 限制
    [root@muban ~]# docker run --help |grep cpu
      -c, --cpu-shares int        CPU shares (relative weight) -- cpu共享(相对权重)
          --cpus decimal          Number of CPUs  -- cpu 数量
          --cpuset-cpus string    CPUs in which to allow  --限制容器使用特定的CPU核心,如(0-3, 0,1)
    
    # 创建一个最大内存使用量为 100M,允许最多使用 50% cpu 的容器
    docker run -d -m 100M --cpus=.5 nginx
    # 创建一个最大内存使用量为 100M,允许最多使用一个半的 cpu 的容器
    docker run -d -m 100M --cpus=1.5 nginx
    
    ps: 容器少没必要限制资源,容器多需限制资源
    

    7. 查看容器资源使用情况

    # 单个容器(默认:流式)
    docker stats 0f3f931644ac
    # 查询某个容器当前 cpu 使用情况
    docker stats 77976729c15d --no-stream |awk '{print $4}'
    # 所有容器
    docker stats
    

    8. 创建镜像

    Usage:  docker container commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
    
    docker container ls
    docker container commit 8b7c9dbab4c5 nginx:v1
    

    9. 拷贝文件/文件夹到容器

    docker container ls
    docker cp zun.txt 8b7c9dbab4c5:/tmp
    docker container exec 8b7c9dbab4c5 ls /tmp
    
    

    10. 查看容器端口映射

    docker container port 77976729c15d
    

    11. 查看一个容器运行的进程

    docker container top 8b7c9dbab4c5
    

    12. 删除容器

    Usage:  docker container rm [OPTIONS] CONTAINER [CONTAINER...]
    Remove one or more containers
    Options:
      -f, --force     Force the removal of a running container (uses SIGKILL)
                        -- 强制移除正在运行的容器
    # 移除单个容器                    
    docker container rm 8b7c9dbab4c5
    # 强制移除全部容器(包含正在运作的容器)
    docker container rm `docker container ls -aq` -f
    
    

    13. 停止/开启/重启容器

    docker container stop 80b20fb056d3
    docker container start 80b20fb056d3
    docker container restart 80b20fb056d3
    

    14. 容器数据持久化

    # 作用:
    1. 多个运行容器之间共享数据。
    2. 当容器停止或被移除时,该卷依然存在。
    3. 将容器的数据存储在远程主机或其他存储上(间接)
    
    mkdir /data/nginx/html -p
    touch /data/nginx/nginx.conf    -- 自己配置,如配置有误,容器不能正常运行
    touch /data/nginx/html/index.html  
    
    
    docker run -d -v /data/nginx/html/:/usr/share/nginx/html/ \
    -v /data/nginx/nginx.conf:/etc/nginx/nginx.conf nginx
    
    
    # 查看详细信息
    docker inspect 916d76220fbc|grep -C 6 /data/nginx
    "Mounts": [
                {
                    "Type": "bind",
                    "Source": "/data/nginx/html",
                    "Destination": "/usr/share/nginx/html",
                    "Mode": "",
                    "RW": true,
                    "Propagation": "rprivate"
                },
                {
                    "Type": "bind",
                    "Source": "/data/nginx/nginx.conf",
                    "Destination": "/etc/nginx/nginx.conf",
                    "Mode": "",
                    "RW": true,
                    "Propagation": "rprivate"
                }
            ]
    
    ps:容器挂载在宿主机的文件(目录)会覆盖容器内原有的文件(目录)
    

    相关文章

      网友评论

          本文标题:docker 容器管理应用

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