LXC(Linux Container)
- 命名空間 - Namespace
- 控制群組 - CGroups
隔離技術 - 命名空間
namespace 是 linux kernel內的一種資源分隔技術
可使process只存取與自身相關的資源
不同 process間察覺不到對方存在
Linux Kernel 中的6種不同命名空間
- - Mount Namespace
- UTS Namespace
- PID Namespace
- IPC Namespace
- Network Namespace
- User Namespace
隔離技術 - 控制群組
Linux kernel內的功能,用來控制、限制、分離 process group的資源
由於容器之間共用宿主物理資源,不同資源之間的佔用情況,也會影響各個容器處理的運行效率,因此資源隔離很重要。
容器技術就是透過上述兩種隔離技術來實現容器的隔離。
LibContainer
Docker在優化過程中,也逐漸發展自己的底層容器技術。
功能:
- Namespace 的使用
- CGroups 的管理
- Rootfs 的配置
- Process 的環境變量配置
Docker 環境安裝
此次使用環境:Kali Linux(2020.1)
安裝指令如下:
1.
apt-get update
apt-get install -y apt-transport-https ca-certificates
apt-get install dirmngr
2.
apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
3.
echo ‘deb https://apt.dockerproject.org/repo debian-stretch main‘ > /etc/apt/sources.list.d/docker.list
4.
apt-get update
apt-get install docker-engine
5.
service docker start
Docker 常見指令
docker images 查看目前images
docker create [OPTIONS] IMAGE [ARG...]
//創建新的imagesdocker rmi [OPTIONS] IMAGE [IMAGE...]
//刪除imagesdocker ps
//查看當前運行container執行 ubuntu
docker run -it ubuntu bash (如果沒有Ubuntu image會自動幫你載)[color=#7dc40b]
Client-Server Architecture
在 終端輸入的 Docker 指令會先傳給 Docker CLI,也就是客戶端,並傳送請求給 Docker Daemon,執行指令中的要求。
參考資料
[1]https://www.pianshen.com/images/316/92f6485e401960153dd9efdda99fcb6c.png