相信嗎?你可以五分鐘搞定Linux容器
Linux容器針對特定工作負(fù)載提供了全新的靈活性與可能性。存在很多解決方案,但是沒有一個解決方案能夠像systemd容器那樣進(jìn)行快速部署。給我五分鐘,本文將介紹如何使用由systemd-nspawn創(chuàng)建的systemd容器。
使用systemd-nspawn的***環(huán)境是運(yùn)行CentOS 7.1及后續(xù)版本的測試系統(tǒng)。一定要使用最近的操作系統(tǒng)版本以確保systemd-nspawn運(yùn)行環(huán)境達(dá)到***。
systemd-nspawn需要使用一個目錄用于容器的系統(tǒng)根目錄。在本示例中我使用的是/var/lib/container目錄。首先使用mkdir /var/lib/container命令創(chuàng)建相應(yīng)的目錄。
開始前,切換到SELinux是個好主意?;蛘咧辽偈褂胹etenforce Permissive命令設(shè)置為permissive模式。在systemd環(huán)境中更改密碼要更簡單,而且本文介紹的是systemd-nspawn,而不是SELinux。
接下來,需要在該根目錄下安裝最小的操作系統(tǒng),yum -y --releaseserver=7Server --installroot=/var/lib/container/centos7 install systemd passwd yum redhat-release vim-minimal命令將會在/var/lib/container/centos7目錄下安裝操作系統(tǒng)。該命令確保需要的軟件包被拷貝到已經(jīng)指定的目錄下。請注意示例安裝的軟件包數(shù)量是進(jìn)行PoC測試的***要求。安裝yum軟件包后,就可以增加所需要的其他軟件包了。
在該目錄下安裝了所需要的軟件包后,就可以啟動容器了。***嘗試時,使用systemd-nspawn -D /var/lib/container/centos7 -b命令是一個不錯的主意。這將會啟動容器并要求你輸入root密碼。問題是還沒有設(shè)置root密碼。
這是因?yàn)槲挥赾hroot模式下。在chroot環(huán)境下,容器主機(jī)操作系統(tǒng)無法獲取root用戶的密碼。因此,你唯一能做的就是打開另一個shell,然后中止systemd-nspawn進(jìn)程。
為進(jìn)入你剛剛登錄的完整環(huán)境,需要在systemd-nspawn命令中增加passwd命令。執(zhí)行該命令時禁用某些不必要的服務(wù)是個不錯的主意。完整的命令如下所示:
- systemd-nspawn -D /var/lib/container/centos7 passwd; systemctl disable kdump postfix firewalld tuned
現(xiàn)在,你可以在chroot環(huán)境下設(shè)置root密碼了。然后返回主機(jī)操作系統(tǒng)的命令提示符。然后,就可以使用systemd nspawn -D /var/lib/container/centos7 -b命令了。
馬上就可以看到一個立即就能使用、正在運(yùn)行中的容器。可以使用systemd-analyze命令發(fā)現(xiàn)啟動容器需要多長時間。在容器環(huán)境中,可以開始提供你想要的任何服務(wù)。為關(guān)閉計(jì)算機(jī),可以像對待其他虛擬機(jī)一樣,只需要輸入shutdown或poweroff命令。
在本文中,你已經(jīng)了解了如何使用systemd-nspawn創(chuàng)建Linux容器,如示例所示,并不需要做任何復(fù)雜的工作。默認(rèn)需要的僅僅是***操作系統(tǒng)的一部分。systemd-nspawn具備成為Linux容器解決方案市場重量級玩家的一切要素。