1、問題描述
最近應老師要求,需要安裝lxc
容器,並跑一個java
程序。網上找了一大堆資料,沒有一站式的博客,這裏從0到完整運行。記錄一下,防止後面的人踩坑。
2、問題解決
安裝lxc 容器
首先準備一個ubuntu 18.04 server
的虛擬機。然後安裝 lxc
。運行
sudo apt install lxc -y
然後創建Ubuntu
的LXC
容器,使用清華源加速,命令如下:
lxc-create -t download -n mylxc-ubuntu2 -- --dist ubuntu --release xenial --arch amd64 --server mirrors.tuna.tsinghua.edu.cn/lxc-images
這裏-n
表示容器的名稱,-t
表示模板,創建容器後,默認情況下也不會啓動它,可以使用以下命令列出所有lxc
容器:
lxc-ls
這裏顯示了我們創建的容器mylxc-ubuntu2
。要啓動容器則運行:
# 啓動容器
sudo lxc-start -n mylxc-ubuntu2
然後使用命令
# 顯示當前容器
sudo lxc-ls --fancy
查看容器是否啓動。
根據控制檯輸出,可以知道容器啓動成功!然後輸入一下命令進入容器。
# 進入容器
sudo lxc-attach -n mylxc-ubuntu2
從控制檯輸出可以知道我們已經進入容器了。
配置網絡參數
首先停止容器(在宿主機上運行,不是lxc
容器內),運行:
# 停掉容器
sudo lxc-stop -n mylxc-ubuntu2
查看當前容器狀態已經是停止狀態。
首先查看網絡基本信息。運行ifconfig
。
由輸出可以知道我的硬件網卡是ens33
,在宿主主機中添加網橋。修改/etc/network/interfaces
配置文件,查看文件註釋,我們需要安裝ifupdown
,運行sudo apt install ifupdown
。然後將配置文件改成如下參數。
auto br0
iface br0 inet dhcp
bridge_ports ens33
bridge_fd 0
bridge_maxwait 0
注意這裏的192.168.114.105
,114
需要和你主機的網關一致。保存並退出後,執行 /etc/init.d/networking restart
重啓網絡
然後編輯容器配置文件,設置網橋爲自定義網橋。
vim /var/lib/lxc/mylxc-ubuntu2/config
修改圖中畫框位置。然後在修改/etc/network/interfaces
文件 ,添加
auto ens33
iface ens33 inet manual
保存並退出,接着開啓並進入容器。
sudo lxc-start -n mylxc-ubuntu2
sudo lxc-attach -n mylxc-ubuntu2
這裏我們發現已經有我們的對外ip
了,在宿主機(虛擬機宿主機測試網絡是否通暢),運行ping 192.168.114.146
可以ping 通,網絡通暢。
配置java環境,並跑Tomcat
首先在容器內新建文件夾存放 jdk
和Tomcat
文件,運行mkdir -p /usr/local/chen/softwware/jdk
。然後將文件上傳到該目錄下。在宿主機上爲:/var/lib/lxc/mylxc-ubuntu2/rootfs/usr/local/chen/softwware/jdk
。在該目錄查看上傳上來的文件。
然後對文件進行解壓。
tar -zxvf apache-tomcat-8.5.55.tar.gz
tar -zxvf jdk-8u221-linux-x64.tar.gz
rm -rf apache-tomcat-8.5.55.tar.gz
rm -rf jdk-8u221-linux-x64.tar.gz
然後配置jdk
環境。輸入vim /etc/profile
。在文件末尾添加jdk
和Tomcat
的配置信息。
export JAVA_HOME=/usr/local/chen/softwware/jdk/jdk1.8.0_221
export CATALINA_HOME=/usr/local/chen/softwware/jdk/apache-tomcat-8.5.55
export TOMCAT_HOME=/usr/local/chen/softwware/jdk/apache-tomcat-8.5.55
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:${CATALINA_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH:${CATALINE_HOME}/bin
修改如下所示:
讓配置生效運行並查看jdk
版本
source /etc/profile
java -version
然後啓動tomcat
。並在外網驗證是否啓動成功。
服務啓動成功。
克隆lxc 容器
首先停止lxc容器。運行sudo lxc-stop -n mylxc-ubuntu2
。然後到lxc
容器目錄下拷貝。
cd /var/lib/lxc
# 拷貝容器
sudo lxc-copy -n mylxc-ubuntu2 -N mylxc-ubuntu_chen
我們發現當前目錄多了一個mylxc-ubuntu_chen
文件夾。
查看當前系統容器。
# 顯示當前容器
sudo lxc-ls --fancy
啓動容器 sudo lxc-start -n mylxc-ubuntu_chen
,然後進入該容器sudo lxc-attach -n mylxc-ubuntu_chen
運行source /etc/profile
使得之前的配置生效。然後開啓Tomcat。
在外面訪問服務器地址。
同樣可以訪問成功。
3、總結
書上的代碼直接運行絕大部分是對的,但是總有一些軟件的更新使得作者無能爲力。之前的API是對的,但是之後就廢棄了或修改了是常有的事。所以我們需要跟蹤源代碼。這只是一個小小的問題,如果沒有前輩的無私奉獻,很難想象我們自己一天能學到多少內容。感謝各位前輩的辛勤付出,讓我們少走了很多的彎路!
點個贊再走唄!歡迎留言哦!