zoukankan      html  css  js  c++  java
  • 个人亲历运维面试

    Docker

    1. docker通过哪些方式实现资源隔离的

    Docker 主要通过六大 Namespace 来实现资源的隔离

    • Mount Namespace,挂载命名空间,用来隔离挂载目录,让不同 Namespace 拥有独立的挂载结构,而程序中对挂载信息的修改不会影响到其他 Namespace 中程序的运行。
    • UTS Namespace,UTS Namespace,用来隔离主机名和域名,通过UTS Namespace,让不同 Namespace 拥有独立的主机名称和网络访问域名。
    • IPC Namespace,进程通信命名空间,用来隔离进程间通信,主要作用于 消息队列、信号量或者是管道,IPC 只能做到同一个命名空间进行通信,无法做到不同命名空间进行信息交换通信
    • PID Namespace,进程命名空间,用来隔离进程的运行信息,PID Namespace 让命名空间拥有独立的进程号管理。
    • Network Namespace,网络命名空间,用来隔离网络协议栈,包括网络设备接口、IPV4 和 IPV6 协议等。
    • User Namespace,用户命名空间,用来隔离用户和用户组信息,通过严格的用户隔离机制,避免 Namespace 中的程序直接操作到宿主机或者其他 Namespace 中的用户。

    2. docker有哪些组件组成

     服务端

      docker-engine:响应来自客户端的请求。通过专门的Engine模块来分发管理各个来自客户端的任务。

      docker-proxy: 用来完成容器端口网络映射配置

      containerd:响应来自dockerd的请求,对下管理runC镜像和容器环境。

      containerd-shim:作为容器内进程的跟进程

    客户端

      docker-cli:为用户提供一系列可执行命令,实现用户与docker服务端交互

    3. 用什么方式来固定容器ip

    创建自定义网络

    1 docker network create --subnet=172.18.0.0/16 mynetwork
    2 ➜ ~ docker network ls
    3 NETWORK ID     NAME        DRIVER       SCOPE
    4 9781b1f585ae    bridge       bridge       local
    5 1252da701e55    host        host        local
    6 4f11ae9c85de    mynetwork      bridge       local
    7 237ea3d5cfbf    none        null        local

    创建docker容器

    docker run -itd --name networkTest1 --net mynetwork --ip 172.18.0.2 centos:latest /bin/bash

    4. 将容器的80端口映射到8080

    iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

    5. attach和exec命令的区别

    docker exec:

    退出shell不会导致容器停止运行。

    docker attach:

    如果退出容器的shell,容器会停止运行。

    6. docker cmd和entrypoint的区别

    每个dockerfile中只能有一个CMD如果有多个那么只执行最后一个。CMD指令会被 docker run后的参数覆盖掉。

    改参数也是多个只执行最后一个ENTRYPOINT命令则不会,它既能启动容器,还能执行ls -l命令。

    7. docker的优点和缺点

    优点:

    1. 部署方便
    2. 部署安全
    3. 隔离性好
    4. 快速回滚
    5. 成本低
    6. 管理成本低

    缺点:

    1. 必须在64位的系统上运行
    2. 系统的内核必须是3.8或者更新
    3. 内核必须支持cgroup和命名空间

    8. docker组成

    一个完整的Docker有以下几个部分组成:
            dockerClient客户端
            Docker Daemon守护进程
            Docker Image镜像
            DockerContainer容器 

    加油,你们是最棒的!
  • 相关阅读:
    jQuery实现动态搜索显示功能
    面试
    Struts1和Struts2的区别和对比(完整版)
    JAVA调用增删改的存储过程
    Spring MVC入门
    jQuery Ajax通用js封装
    js ==与===区别
    shell脚本awk
    C++对象模型初窥
    再见,2021
  • 原文地址:https://www.cnblogs.com/Wshile/p/12510728.html
Copyright © 2011-2022 走看看