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