Canonical LXD 容器软件和 docker 容器软件之间的主要功能区别是什么?

问题描述

我已经安装了 docker,但 ubuntu 产品似乎是开源软件,并且不会破坏我的钱包来做同样的事情,但是 docker 似乎与谷歌云更兼容?我不确定 LXD,但我正在使用安装帮助指南将它安装在包管理器中,但我不确定部署或如何在 ubuntu 云与谷歌云上部署模型。我希望我能在某处找到图形关系。

解决方法

主要区别在于Docker提供应用容器,而LXD提供系统容器

应用程序容器是帮助您运行应用程序、网络服务或类似内容的容器。完成应用程序后,Docker 将终止。

使用 LXD,您可以创建系统容器,这与虚拟机非常相似。系统容器是 Linux 发行版运行时,当您启动它时,您选择的 Linux 发行版正在启动。它会一直运行,直到您将其关闭。与 VM 不同,系统容器不运行自己的 Linux 内核;它重用了主机的 Linux 内核。即使您在 Ubuntu 主机上启动 Fedora 系统容器,Fedora 系统容器也会在 Ubuntu Linux 内核上运行(感谢 Linux 内核的稳定 API)。

以下是创建系统容器、安装nginx,然后访问网络服务器的示例。如果要使用 Docker 执行此操作,则需要创建或查找一些 Dockerfile。由于您使用的是传统的 Linux 管理命令,因此您可以自由地测试您想要的任何命令。就像使用虚拟机一样。

在下文中,我使用 Ubuntu 20.04(支持所有主要 Linux 发行版)创建了一个名为 mycontainer 的系统容器。然后,我在系统容器中获取一个 shell 并更新包列表。随后,我安装了 nginx。我从容器中注销并检查容器的 IP 地址。最后,我从主机访问该网站。如果我在主机上运行 Firefox,我可以从 Firefox 访问 Web 服务器。

$ lxc launch ubuntu:20.04 mycontainer
Creating mycontainer
Starting mycontainer
$ lxc shell mycontainer
root@mycontainer:~# apt update && apt install -y nginx
...
root@mycontainer:~# lsof -i :www
COMMAND  PID     USER   FD   TYPE DEVICE SIZE NODE NAME
nginx   1470     root    6u  IPv4 297609       TCP *:http (LISTEN)
nginx   1470     root    7u  IPv6 297610       TCP *:http (LISTEN)
nginx   1471 www-data    6u  IPv4 297609       TCP *:http (LISTEN)
nginx   1471 www-data    7u  IPv6 297610       TCP *:http (LISTEN)
nginx   1472 www-data    6u  IPv4 297609       TCP *:http (LISTEN)
nginx   1472 www-data    7u  IPv6 297610       TCP *:http (LISTEN)
nginx   1473 www-data    6u  IPv4 297609       TCP *:http (LISTEN)
nginx   1473 www-data    7u  IPv6 297610       TCP *:http (LISTEN)
nginx   1474 www-data    6u  IPv4 297609       TCP *:http (LISTEN)
nginx   1474 www-data    7u  IPv6 297610       TCP *:http (LISTEN)
root@mycontainer:~# logout
$ lxc list mycontainer
+-------------+---------+--------------------+------+-----------+-----------+
|    NAME     |  STATE  |        IPV4        | IPV6 |   TYPE    | SNAPSHOTS |
+-------------+---------+--------------------+------+-----------+-----------+
| mycontainer | RUNNING | 10.10.10.92 (eth0) |      | CONTAINER | 0         |
+-------------+---------+--------------------+------+-----------+-----------+
$ curl 10.10.10.92
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
...
$ lxc stop mycontainer
$ lxc delete mycontainer

就像使用虚拟机一样,您也可以通过系统容器从 LAN 获取 IP 地址。还有许多其他东西,比虚拟机轻得多。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...