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是对的,但是之后就废弃了或修改了是常有的事。所以我们需要跟踪源代码。这只是一个小小的问题,如果没有前辈的无私奉献,很难想象我们自己一天能学到多少内容。感谢各位前辈的辛勤付出,让我们少走了很多的弯路!

点个赞再走呗!欢迎留言哦!

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐