设为首页 收藏本站
查看: 1376|回复: 0

[经验分享] 在Ubuntu16.04上部署LXC容器管理系统的相关步骤

[复制链接]

尚未签到

发表于 2017-11-22 07:12:42 | 显示全部楼层 |阅读模式
  打算安装一个LXC linux容器管理的软件来分配使用资源并配置不同的编程环境,这样就方便大家的使用,步骤如下(宿主机的环境都搭建好了,对应显卡的驱动等):
  参考网站:
  简单入门和相关指令总结:https://www.ibm.com/developerworks/cn/linux/1312_caojh_linuxlxc/index.html
  Linux 容器的资源管理方法:https://www.ibm.com/developerworks/cn/linux/1404_caojh_lxc/
  其他部署的方法可以参看这个:https://zhuanlan.zhihu.com/p/25710517
  一、简单的使用流程:
  1、安装LXC软件:



sudo apt-get install lxc
DSC0000.png 我的已经安装好了,提示不用安装了。

  2、检查一下当前的linux内核版本是否支持lxc:



sudo lxc-checkconfig
DSC0001.png 如果每个状态都是enable,则表示当前环境支持LXC

  3、开始创建一个容器,容器的类型选择如下所示:



# tree /usr/lib/lxc/templates/
/usr/lib/lxc/templates/
├── lxc-busybox
├── lxc-debian
├── lxc-fedora
├── lxc-opensuse
├── lxc-sshd
├── lxc-ubuntu
└── lxc-ubuntu-cloud
  这些模板我们都可以使用,举例使用lxc-ubuntu类型的系统来构建一个新的container:



sudo lxc-create -n Centos -t ubuntu
  运行过程如下:需要注意的是最后会告诉你对应系统的初始用户名和密码:
DSC0002.png

  注意密码在这里哦!!!!
DSC0003.png

  接下来我们用指令来查看创建好的container:



sudo lxc-ls -f
DSC0004.png

  Centos那个主机是我们刚刚创建好的,Debian和Ubuntu是我之前创建的。我们也能通过lxc-ls -f这条指令来查看所有container当前的状态。
  我们能在/var/lib/lxc的目录中查看到创建好的容器的相关配置文件,我们就是通过修改相关的配置文件(config文件)来控制对应容器container的参数的。
DSC0005.png    DSC0006.png

  4、开启容器中的机器:



sudo lxc-start -n Ubuntu
DSC0007.png

  5、打开对应机器的控制台:



sudo lxc-console -n Ubuntu
DSC0008.png

  输入对应的用户名和密码就可以啦~用户名:ubuntu  密码:ubuntu
  6、使用ssh连接对应的主机:
DSC0009.png

  找到对应的内网IP地址之后,我们就可以通过ssh来连接对应的container主机了:



sudo ssh ubuntu@10.0.3.155
  这样就可以连接到我梦需要使用的container上面了,如下图所示:(注意@符号前面的名称ubuntu不是container的名称而是主机的用户名)
DSC00010.png

  7、关闭对应的容器:



sudo lxc-stop -n Ubuntu
  你可以直接使用exit来直接推出当前的容器,但是容器并没有被关闭掉,此时容器的机器还是会占有一定的硬件资源:
DSC00011.png    DSC00012.png 此时只是退出了当前的容器。

  所以需要用到指令:lxc-stop -n Ubuntu 来关闭叫做Ubuntu的容器:
DSC00013.png 如图所示,Ubuntu容器的状态是STOPPED,同时内网IP也丢失了。

  二、详细具体的相关指令:
  lxc-version 用于显示系统LXC的版本号(可以通过此命令判断系统是否安装了lxc)
  lxc-checkconfig 用于判断linux内核是否支持LXC
  lxc-create用于创建一个容器
  用法:lxc-create -n name [-f config_file]
  -n 后面跟要创建的容器名字 例如:-n foo
  -f 后面跟容器配置文件的路径
  lxc-execute 用于在一个容器执行应用程序
  lxc-start 用于在容器中执行给定命令
  用法:lxc-start  -n name [-f config_file] [-c console_file] [-d] [-s KEY=VAL]
          [command]
  -d 将容器当做守护进程执行
  -f  后面跟配置文件
  -c 指定一个文件作为容器console的输出,如果不指定,将输出到终端
  -s 指定配置
  例如:lxc-start -n foo -f foo.conf -d /bin/bash
  lxc-kill 发送信号给容器中的第一个用户进程(容器内部进程号为2的进程)
  用法:lxc-kil -n name SIGNUM
  -n 后面跟容器名
  SIGNUM  信号 (此参数可选,默认SIGKILL)
  例如:lxc-kill -n foo
  lxc-stop 用于停止容器中所有的进程
  用法:lxc-stop -n name
  -n后面跟要停止的容器名
  lxc-destroy 用于销毁容器
  用法:lxc-destroy -n name
  -n后面跟要停止的容器名
  lxc-cgroup 用于获取或调整与cgroup相关的参数
  用法:lxc-cgroup -n name subsystem value
  -n 后面跟要调整的容器名
  例如: lxc-cgroup -n foo devices.list
  lxc-cgroup -n foo cpuset.cpus "0,3"
  lxc-info 用户获取一个容器的状态
  用法:lxc-info -n name
  -n后面跟操作的容器名
  例如: lxc-info --n foo
  lxc-ls 列出当前系统所有的容器
  用法:lxc-ls
  例如:lxc-ls
  三、ssh登录时的用户界面脚本编写:
  为了方便的使用进入到对应的container当中,编写了ssh登录到宿主机时的登录界面(ssh登录时都会自动运行脚本~/.bashrc,因此我们只需要将需要登录之后运行的脚本写入到~/.bashrc文件当中就可以了)如下所示:
DSC00014.png 将这些代码添加到~/.bashrc文件的最后面,每次ssh登录时就会运行此脚本。

  代码如下:



echo "The Status Of the Machine:"
INFO=$(sudo lxc-ls -f)
echo "$INFO"
echo "The Table For Choosing Sys-Container:"
echo "1 --------- Ubuntu16.04+TensorFlow1.0"
echo "2 --------- Debian10.42+Caffe1.2"
echo "3 --------- Centos17.22+TensorFlow1.2"
echo "Please Choose The Lable Of The System:"
read input
if [ "$input" -eq 1 ]; then
echo "Ubuntu is Starting,Please waitting..."
sudo lxc-start -n Ubuntu
echo "Have a Good Day!"
sudo ssh ubuntu@10.0.3.155
elif [ "$input" -eq 2 ]; then
echo "Debian is Starting,Please waitting..."
sudo lxc-start -n Debian
echo "Have a Good Day!"
sudo ssh Debian@10.0.3.239
elif [ "$input" -eq 3 ]; then
echo "Centos is Starting,Please waitting..."
sudo lxc-start -n Centos
echo "Have a Good Day!"
sudo ssh Centos@10.2.0.134
else
echo "Thanks For Choosing the Host Machine,Enjoying~"
fi
  实际的效果如下所示:
DSC00015.png

  输入容器Ubuntu机器的密码就可以进入这个版本的容器当中,这样操作也是非常方便的,其他的相关操作和需要后面在不断的优化吧。
DSC00016.png

  2017.9.8 更新方法:
  四、使用端口映射的转发的方法
  借鉴一下知乎大神的方法,实现端口的映射和转发功能也能很好很方便的解决容器使用的问题:
  直接使用端口映射的功能(确保启动了需要使用的容器lxc-start -n Ubuntu):



sudo iptables -t nat -A PREROUTING -d 192.168.1.117 -p tcp --dport 10001 -j DNAT --to-destination 10.0.3.155:22
  将主机的10001端口映射到主机内网容器的22端口上面,实现端口数据的转发功能,实验结果如下:
DSC00017.png DSC00018.png

  由上可以看出,端口映射的转发功能没有问题。(相关参考:http://blog.csdn.net/xin_yu_xin/article/details/46416101)
                       完~

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-409388-1-1.html 上篇帖子: linux lamp环境的搭建 下篇帖子: 如何在Linux系统上安装字体
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表