一、docker基礎(chǔ)
docker是一個(gè)開源的容器化工具,能夠?qū)?yīng)用程序及其所有依賴項(xiàng)打包在一起,以使其在任何環(huán)境中都能夠高效運(yùn)行。Docker可以輕松地構(gòu)建、打包、分發(fā)、部署和運(yùn)行任何應(yīng)用程序。Docker使用完全可重復(fù)的構(gòu)建自動(dòng)化流程和可重復(fù)的部署Pipeline,來(lái)減少不必要的人工干預(yù),提高應(yīng)用程序部署的可靠性。
Docker的核心是鏡像。Docker鏡像是一個(gè)靜態(tài)的文件,其中包含構(gòu)成運(yùn)行某個(gè)應(yīng)用程序所需的所有代碼和依賴項(xiàng)。鏡像可以被看作是操作系統(tǒng)的一個(gè)快照。
Docker的其他重要組件包括:容器、倉(cāng)庫(kù)、網(wǎng)絡(luò)和卷。
二、docker高級(jí)
docker還有很多高級(jí)的用法,包括如何管理多個(gè)容器、如何使用docker-compose編排多個(gè)容器的部署、如何使用docker swarm進(jìn)行集群管理等等。
三、docker安全
由于Docker容器包含完整的文件系統(tǒng)和系統(tǒng)資源,并且可以與宿主機(jī)共享內(nèi)核,因此Docker容器的安全性是必須考慮的問(wèn)題。下面是有關(guān)Docker安全性的一些最佳實(shí)踐。
3.1 最小化鏡像的大小
通過(guò)最小化Docker鏡像的大小來(lái)減少容器的攻擊面??梢允褂枚嚯A段構(gòu)建,先使用一個(gè)基礎(chǔ)鏡像進(jìn)行編譯,最后再使用一個(gè)較小的鏡像進(jìn)行部署。
3.2 限制容器的權(quán)限
使用Linux Capabilities可以限制容器的權(quán)限。使用docker run命令時(shí)可以通過(guò)--cap-drop和--cap-add參數(shù)來(lái)添加或禁用容器的Capability。
3.3 監(jiān)控容器
使用docker inspect命令或第三方監(jiān)控工具可以監(jiān)控容器的運(yùn)行狀態(tài),了解容器是否存在異常。
3.4 安全掃描
使用第三方安全掃描工具可以檢測(cè)鏡像和容器中的安全漏洞。
3.5 使用Docker Bench進(jìn)行安全審計(jì)
Docker Bench是一個(gè)用于安全審計(jì)Docker環(huán)境的工具。Docker Bench會(huì)檢查Docker主機(jī)和容器的安全配置,并給出建議。
下面是使用Docker Bench進(jìn)行安全審計(jì)的例子。
# 在主機(jī)上運(yùn)行Docker Bench
docker run -it --net host --pid host --userns host --cap-add audit_control \
-v /etc:/etc \
-v /var/lib:/var/lib \
-v /usr/lib:/usr/lib \
-v /etc/docker:/etc/docker \
--label docker_bench_security \
docker/docker-bench-security