如何在Ubuntu 16.04 LTS上安装LXD容器管理程序
如何安装LXD容器管理程序以在Ubuntu Linux 16.04 LTS服务器上以惊人的速度运行未修改的Debian/Ubuntu/CentOS Linux操作系统VM?
如何在Ubuntu Linux服务器上设置和使用LXD?
LXD不是LXC的重写。
在幕后,LXD通过liblxc及其Go绑定使用LXC。
在本教程中,您将学习在Ubuntu Linux 16.04服务器上设置和使用LXD。
在Ubuntu上安装LXD
输入以下apt-get命令:
$ sudo apt install lxd
或者
$ sudo apt-get install lxd
为VM配置LXD网络和存储
我建议您使用ZFS以及基于DHCP的IP网络,以简化每个VM的设置。
ZFS提供了制作快照和其他高级功能的快速选项。
以下命令显示所有虚拟机的ZFS设置:
$ sudo zfs list
输出示例:
[sudo] password for Hyman: NAME USED AVAIL REFER MOUNTPOINT theitroad 744K 461G 192K /theitroad theitroad/lxdvms 192K 461G 192K /theitroad/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: theitroad/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]?
您需要根据提示配置基于LXD dhcp的网桥。
LXC命令
lxc命令用于与LXD服务器通信。 lxd软件包创建一个新的lxd组,其中包含允许通过本地unix套接字与lxd进行通信的所有用户。
换句话说,用户名必须属于lxd组:
$ id username $ id Hyman $ grep lxd /etc/group
输出示例:
lxd:x:110:Hyman
如果Hyman(或任何其他用户)用户不属于lxd组,则当您尝试使用lxc命令时,将收到以下错误消息:
Permission denied, are you in the lxd group?
请注意,组成员资格仅适用于登录或ssh会话,然后您需要关闭并重新打开用户/ssh会话,或使用以下命令来避免上述错误:
$ newgrp lxd
验证lxc客户端正在与LXD守护程序进行对话:
$ lxc list
如何列出各种Linux发行版的可用镜像?
列出来自默认远程服务器的所有镜像
$ lxc image list images:
要使用镜像创建和启动容器,请使用启动命令:
lxc launch images:{distro}/{version}/{arch} {container-name-here}
大多数镜像都具有几种别名。
要查看列表,请执行:
$ 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
如何创建和使用第一个容器
要从镜像创建和启动容器,使用launch命令:
lxc launch images:{distro}/{version}/{arch} {container-name-here}
让我们看一些示例,根据您的需要从各种Linux发行镜像创建和启动容器。
Alpine Linux 3.7 VM
$ 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 VM
$ lxc launch images:ubuntu/xenial/amd64 ubuntu-nginx
Debian Linux 9.x VM
$ 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
如何列出我的所有容器?
列出现有容器:
$ lxc list --fast $ lxc list | grep RUNNING $ lxc list | grep STOPPED $ lxc list | grep $ lxc list "*c1*" $ lxc list "*db*" $ lxc list
如何在容器中执行/运行指定的命令?
要在容器中运行或执行命令,请使用exec命令:
lxc exec containerName -- command lxc exec containerName -- /path/to/script lxc exec containerName --env EDITOR=/usr/bin/vim -- command ### run date, ip a, ip rm and other commands on various containers ### $ 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
如何启动容器?
使用以下cli启动容器:
$ lxc start containerName $ lxc start foo $ lsc start centos-db opensuse
如何停止我的容器?
使用以下语法停止容器:
$ lxc stop containerName $ lxc stop foo $ lsc stop centos-db opensuse
如何重新启动容器?
重新启动容器:
$ 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.
容器当前正在运行,请先停止运行或传递–force参数。
要解决此问题,执行以下命令:
$ lxc stop centos-db && lxc delete centos-db
如何在LXD服务器和容器上显示信息?
如何使用lxc查看LXD容器的内存,cpu,网络使用情况信息,
执行以下命令:
$ lxc info $ lxc info containerName $ lxc info cenots-db
我可以在容器中运行OpenSSH服务器吗?
是。
您可以像安装VPS或服务器一样安装和使用openssh-server。
例如:
$ lxc exec centos-db -- yum install openssh-server $ lxc exec cenots-db -- systemctl start sshd $ ssh user@centos-db $ ssh user@centos-db-ip-address-here