ubuntu 18.04 server 安裝 lxc 配置網絡 並部署Tomcat

1、問題描述

最近應老師要求,需要安裝lxc容器,並跑一個java程序。網上找了一大堆資料,沒有一站式的博客,這裏從0到完整運行。記錄一下,防止後面的人踩坑。

2、問題解決

安裝lxc 容器

首先準備一個ubuntu 18.04 server的虛擬機。然後安裝 lxc。運行

sudo apt install lxc -y

在這裏插入圖片描述

然後創建UbuntuLXC容器,使用清華源加速,命令如下:

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

首先在容器內新建文件夾存放 jdkTomcat 文件,運行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。在文件末尾添加jdkTomcat的配置信息。


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是對的,但是之後就廢棄了或修改了是常有的事。所以我們需要跟蹤源代碼。這只是一個小小的問題,如果沒有前輩的無私奉獻,很難想象我們自己一天能學到多少內容。感謝各位前輩的辛勤付出,讓我們少走了很多的彎路!

點個贊再走唄!歡迎留言哦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章