589 字
3 分鐘
🔽 Kali 安裝 Docker
Cover image for 🔽 Kali 安裝 Docker

#Kali 安裝 Docker

Terminal window
apt-get update
apt-get install docker-engine
## 安裝結束,打開docker服務
service docker start
## 驗證安裝,運行測試樣例
docker --version
docker run hello-world
#測試

#docker 常用命令

Terminal window
docker --version
docker images
docker ps -a
docker run -d --name 123 -p 127.0.0.1:80:80 鏡像名
docker stop 123

#dockers 底層原理

#Namespaces

命名空間是 Linux 為我們提供的用於分離進程樹、網絡接口、掛載點以及進程間通信等資源的方法。在日常使用 Linux 時,我們並沒有運行多個完全分離的服務器的需要,但是如果我們在服務器上啟動了多個服務,這些服務其實會相互影響的,每一個服務都能看到其他服務的進程,也可以訪問宿主機器上的任意文件,這是很多時候我們都不願意看到的,我們更希望運行在同一台機器上的不同服務能做到完全隔離,就像運行在多台不同的機器上一樣。

#CGroups

我們通過 Linux 的命名空間為新創建的進程隔離了文件系統、網絡並與宿主機器之間的進程相互隔離,但是命名空間並不能夠為我們提供物理資源上的隔離,比如 CPU 或者內存,如果在同一台機器上運行了多個對彼此以及宿主機器一無所知的『容器』,這些容器卻共同占用了宿主機器的物理資源。 如果其中的某一個容器正在執行 CPU 密集型的任務,那麽就會影響其他容器中任務的性能與執行效率,導致多個容器相互影響並且搶占資源。如何對多個容器的資源使用進行限制就成了解決進程虛擬資源隔離之後的主要問題,而 Control Groups(簡稱 CGroups)就是能夠隔離宿主機器上的物理資源,例如 CPU、內存、磁盤 I/O 和網絡帶寬。 在 CGroup 中,所有的任務就是一個系統的一個進程,而 CGroup 就是一組按照某種標準劃分的進程,在 CGroup 這種機制中,所有的資源控制都是以 CGroup 作為單位實現的,每一個進程都可以隨時加入一個 CGroup 也可以隨時退出一個 CGroup。

💬 參與討論
使用 GitHub 帳號登入參與討論