個人親歷運維面試 - docker部分


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容器 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM