我安装了 docker,但 ubuntu 产品似乎是开源软件,并没有打破我的钱包做同样的事情,但 docker 似乎更兼容谷歌云?我不确定 LXD,但我将它安装在带有安装帮助指南的包管理器中,但我不确定部署或如何在 ubuntu 云与谷歌云上部署模型。我希望我能在某处找到图形关系。
1 回答
主要区别在于 Docker 提供应用程序容器,而 LXD 提供系统容器。
应用程序容器是帮助您运行应用程序、网络服务或类似事物的容器。完成应用程序后,Docker 将终止。
使用 LXD,您可以创建与虚拟机非常相似的系统容器。系统容器是 Linux 发行版运行时,当您启动它时,您选择的 Linux 发行版正在启动。它会一直运行,直到您将其关闭。与 VM 不同,系统容器不运行自己的 Linux 内核。它重用了主机的 Linux 内核。即使您在 Ubuntu 主机上启动了 Fedora 系统容器,Fedora 系统容器也在 Ubuntu Linux 内核上运行(感谢 Linux 内核的稳定 API)。
下面是一个创建系统容器、安装nginx
、然后访问 Web 服务器的示例。如果要使用 Docker 执行此操作,则需要创建或查找一些 Dockerfile。由于您使用的是传统的 Linux 管理命令,因此您可以自由地测试您想要的任何命令。就像使用虚拟机一样。
在下文中,我使用 Ubuntu 20.04 创建了一个名为mycontainer的系统容器(支持所有主要的 Linux 发行版)。然后,我在系统容器中得到一个 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 地址。还有许多其他的东西,比虚拟机轻得多。