社群中常用的做法是利用lxcfs來提供容器中的資源可見性。lxcfs是乙個開源的fuse(使用者態檔案系統)實現來支援lxc容器。
lxcfs通過使用者態檔案系統,在容器中提供下列 procfs 的檔案:
/proc/cpuinfo
/proc/diskstats
/proc/meminfo
/proc/stat
/proc/swaps
/proc/uptime
比如,把宿主機的 /var/lib/lxcfs/proc/memoinfo 檔案掛載到docker容器的/proc/meminfo位置後。容器中程序讀取相應檔案內容時,lxcfs的fuse實現會從容器對應的cgroup中 讀取正確的記憶體限制。從而使得應用獲得正確的資源約束設定
一、利用lxcfs增強docker容器隔離性和資源可見性
[root@docker1 ~]
# yum install -y lxcfs-2.0.5-3.el7.centos.x86_64.rpm
安裝完lxcfs之後,會在/var/lib目錄下生成lxcfs目錄。只是/var/lib/lxcfs目錄中沒有內容。
2、啟動lxcfs
[root@docker1 ~]
# cd /var/lib/lxcfs/
[root@docker1 lxcfs]
# ls
#按回車結束,千萬不要用crtl+c,因為ctrl+c會將該程序殺死。
[root@docker1 lxcfs]
# lxcfs /var/lib/lxcfs/ &
====
====
====
====
====
====
====
====
====
====
====
====
[root@docker1 lxcfs]
# ls
#啟動lxcfs之後,會在/var/lib/lxcfs目錄下生成cgroup目錄和proc目錄
使用"ps ax"命令,檢視lxcfs的程序
3、在docker中測試
[root@docker1 lxcfs]
# docker run -it --name vm5 -m 200m \
> -v /var/lib/lxcfs/proc/cpuinfo:/proc/cpuinfo \
> -v /var/lib/lxcfs/proc/diskstats:/proc/diskstats:rw \
> -v /var/lib/lxcfs/proc/meminfo:/proc/meminfo:rw \
> -v /var/lib/lxcfs/proc/stat:/proc/stat:rw \
> -v /var/lib/lxcfs/proc/swaps:/proc/swaps:rw \
> -v /var/lib/lxcfs/proc/uptime:/proc/uptime:rw \
> ubuntu
root@01bea1ed2d02:/# free -m
total used free shared buffers cached
mem: 200 1 198 77 0 0
-/+ buffers/cache: 0 199
swap: 200 0 200
#我們可以看到總記憶體為200m,表示配置成功
注意:不能直接把/var/lib/lxcfs/proc目錄掛載到容器內的/proc目錄下,因為容器內的/proc目錄下本身是有內容的,是系統的程序資訊等等,如果直接把/var/lib/lxcfs/proc目錄掛載到容器內的/proc目錄下,會覆蓋容器內/proc目錄下的內容,而/proc目錄下記錄的是容器的程序資訊等等內容,是不能被覆蓋的,所以不能直接把/var/lib/lxcfs/proc目錄掛載到容器內的/proc目錄下。
二、設定特權級執行的容器:–privileged=true
有的時候我們需要容器具備更多的許可權,比如操作核心模組,控制swap交換分割槽,掛載usb磁碟,修改mac位址等。
我們建立容器後,進入容器的root帳號的許可權是受限制的,不是真正的root使用者。
加入–privileged=true引數,獲得的是具有管理員許可權的root使用者。
2、設定容器白名單:–cap-add
–privileged=true 的許可權非常大,接近於宿主機的許可權,為了防止使用者的濫用,需要增加限制,只提供給容器必須的許可權。此時docker 提供了許可權白名單的機制,使用–cap-add新增必要的許可權。
docker容器的安全加固
社群中常用的做法是利用lxcfs來提供容器中的資源可見性。lxcfs是乙個開源的fuse 使用者態檔案系統 實現來支援lxc容器。lxcfs通過使用者態檔案系統,在容器中提供下列 procfs 的檔案 proc cpuinfo proc diskstats proc meminfo proc sta...
Docker基礎 10 docker安全加固
docker安全加固 命令設定限制記憶體使用 root server2 shm docker run memory 200m memory swap 200m it busybox 但是隔離不徹底,顯示仍為宿主及記憶體,雖然實際記憶體限制是生效的。一 加固隔離1 安裝開啟 yum install l...
Docker 容器安全
由下圖可見,虛擬機器是通過管理系統 hypervisor 模擬出 cpu 記憶體 網路等硬體,然後在這些模擬的硬體上建立客戶核心和作業系統。這樣做的好處就是虛擬機器有自己的核心和作業系統,並且硬體都是通過虛擬機器管理系統模擬出來的,使用者程式無法直接使用到主機的作業系統和硬體資源,因此虛擬機器也對隔...