在Ubuntu Linux 16.04 LTS服务器上如何安装LXD容器管理程序?
如何在Ubuntu中创建并运行Debian/Ubuntu/CentOS Linux操作系统虚拟机?
如何在Ubuntu Linux服务器上设置和使用LXD?
如何在Ubuntu Linux 16.04服务器上搭建并使用LXD?
如何列出系统中所有容器?
$ lxc list --fast $ lxc list | grep RUNNING $ lxc list | grep STOPPED $ lxc list | grep $ lxc list "*c1*" $ lxc list "*db*" $ lxc list
在Ubuntu上安装LXD
输入以下apt-get命令:
$ sudo apt install lxd
或者
$ sudo apt-get install lxd
如何停止LXC容器?
使用以下语法停止容器:
$ lxc stop containerName $ lxc stop foo $ lsc stop centos-db opensuse
如何重启LXC容器?
$ lxc restart containerName $ lxc restart foo $ lsc restart centos-db opensuse
如何删除容器?
请谨慎操作,因为LXD容器会在没有任何确认提示的情况下立即删除
$ lxc delete containerName $ lxc delete foo $ lsc delete centos-db
删除容器时可能会出现以下错误:The container is currently running, stop it first or pass force.容器当前正在运行,请先停止运行或通过。
要解决此问题,先停止容器再删除:
$ lxc stop centos-db && lxc delete centos-db
为虚拟机配置LXD网络和存储
我们将使用ZFS文件系统,它可以提供快照等功能,同时使用DHCP分配IP地址。
查看zfs文件系统列表
$ sudo zfs list
输出示例:
[sudo] password for jack: NAME USED AVAIL REFER MOUNTPOINT onitroad 744K 461G 192K /onitroad onitroad/lxdvms 192K 461G 192K /onitroad/lxdvms
设置存储和网络选项:
$ sudo lxd init
输出示例:
Name of the storage backend to use (dir or zfs) [default=zfs]: Create a new ZFS pool (yes/no) [default=yes]? no Name of the existing ZFS pool or dataset: onitroad/lxdvms Would you like LXD to be available over the network (yes/no) [default=no]? Do you want to configure the LXD bridge (yes/no) [default=yes]?
LXC命令
lxc命令用于与LXD服务器通信。lxd软件包创建一个新的“ lxd”组,其中包含允许通过本地unix套接字与lxd对话的所有用户。换句话说,您的用户名必须是lxd组的一部分。
$ id username $ id jack $ grep lxd /etc/group
输出示例:
lxd:x:110:jack
如果jack(或任何其他用户)用户不属于lxd组,则当您尝试使用lxc命令时,将收到以下错误消息:
Permission denied, are you in the lxd group?
请注意,组成员资格仅适用于登录或ssh会话,然后您需要关闭并重新打开用户/ssh会话,或使用以下命令来避免上述错误:
$ newgrp lxd
验证lxc客户端正在与LXD守护程序进行会话:
$ lxc list
输出示例:
+------+-------+------+------+------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +------+-------+------+------+------+-----------+
可以在容器中运行OpenSSH服务器吗?
可以。可以像服务器一样安装和使用openssh-server。
$ lxc exec centos-db -- yum install openssh-server $ lxc exec cenots-db -- systemctl start sshd 通过ssh登录容器 $ ssh user@centos-db 或者 $ ssh user@容器centos-db的ip地址
如何启动LCX容器?
$ lxc start containerName $ lxc start foo $ lsc start centos-db opensuse # 同时启动两个
如何在容器中执行/运行指定的命令?
要在容器中运行或执行命令,请使用exec命令:
lxc exec containerName -- command lxc exec containerName -- /path/to/script lxc exec containerName --env EDITOR=/usr/bin/vim -- command ### 在容器中执行命令 $ lxc exec cenots-db -- date $ lxc exec opensuse -- ifconfig $ lxc exec ubuntu-nginx -- ip r $ lxc exec fedora24-c1 -- dnf update $ lxc exec file-server -- cat /etc/debian_version
如何在容器中访问bash shell?
要登录容器file-server并获取shell的访问权限,执行:
$ lxc exec file-server bash
现在您可以运行命令或安装软件包
# cat /etc/*issue* # apt-get update # apt-get upgrade
要从容器中退出,只需执行exit
# exit
如何查看可以使用的各种Linux发行版镜像?
如何查看有哪些Linux镜像可以使用?
$ lxc image list images:
大多数镜像都有几种别名。
查看别名列表:
$ lxc image alias list images: $ lxc image alias list images: | grep -i centos $ lxc image alias list images: | grep -i arch $ lxc image alias list images: | grep -i debian
如何查看LXD服务器和容器信息?
如何使用lxc查看LXD容器的内存,cpu,网络使用情况信息:
$ lxc info $ lxc info containerName $ lxc info cenots-db
如何创建和使用第一个容器
要使用映像创建和启动容器,请使用启动命令:
lxc launch images:{distro}/{version}/{arch} {container-name-here}
让我们看一些示例,如何从各种Linux发行镜像创建和启动容器。
Alpine Linux 3.7 虚拟机
$ lxc launch images:alpine/3.7/amd64 alpine-www
输出示例
Creating alpine-www Retrieving image: 100% Starting alpine-www
CentOS Linux 7虚拟机
$ lxc launch images:centos/7/amd64 cenots-db
Ubuntu Linux 16.4 xenial LTS 虚拟机
$ lxc launch images:ubuntu/xenial/amd64 ubuntu-nginx
Debian Linux 9.x 虚拟机
$ lxc launch images:debian/stretch/amd64 file-server
Arch Linux虚拟机
$ lxc launch images:archlinux/amd64 arch-c1
Gentoo Linux虚拟机
$ lxc launch images:gentoo/amd64 gentoo-c1
Fedora Linux 26和27 VM
$ lxc launch images:fedora/26/amd64 fedora26-c1
或者
$ lxc launch images:fedora/27/amd64 fedora27-c1
OpenSUSE Linux 42.3虚拟机
$ lxc launch images:opensuse/42.3/amd64 opensuse
Oracle Linux 7.x虚拟机
$ lxc launch images:oracle/7/amd64 oracle-proxy-c1