可以像 Dockerfile 一样使用 lxdcli 进行 LXD 构建

我只需要一种选择,将以下内容以中国母语进行释义:

目的

集装箱中的一个优点是可移动性。LXD相对于虚拟机来说更加轻量,但并不像Docker容器那样轻量。因此,可移动性正在丧失。因此,我考虑是否像Docker一样在任何地方都可以进行相同的构建,从而提高可移动性。

设备设置的地点

我已经将这段代码放在了GitHub上。

 

安装步骤

只需要一个选项,请将以下内容以中文母语方式转述:
前提是可以使用Python!

git clone https://github.com/shoma564/lxdcli.git
cd lxdcli
install lxdcli /usr/local/sbin/
pip install pylxd

用法

lxdcli有三种指令文。

$ lxdcli

Usage: lxdcli COMMAND


Common Commands:
  build    build a lxdfile
  copy     copy containers
  delete   delete containers

建设

基于lxdfile构建,创建lxd容器。同时,需要在参数中指定lxdfile。

root@shoma:/home/shoma/lxdcli/sample # lxdcli build

lxdfileを指定してください


root@shoma:/home/shoma/lxdcli/sample # lxdcli build ./lxdfile
>>>>>>>> lxc launch images:ubuntu/23.10 ubuntu-lamp


Error: Failed instance creation: Failed creating instance record: Add instance info to the database: This "instances" entry already exists
Creating ubuntu-lamp

>>>>>>>> lxc start ubuntu-lamp


Error: The instance is already running

复制

复制已经存在的多个LXD容器。参数需要指定容器名称和容器数量。

root@shoma:/home/shoma/lxdcli/sample # lxdcli copy

コピーするコンテナ名を指定してください
root@shoma:/home/shoma/lxdcli/sample # lxdcli copy ubuntu-lamp

コピーするコンテナ数を指定してください
root@shoma:/home/shoma/lxdcli/sample # lxdcli copy ubuntu-lamp 2
>>>>>>>> lxc copy ubuntu-lamp ubuntu-lamp-0
root@shoma:/home/shoma/lxdcli/sample # lxc list
+---------------+---------+------------------------------+-----------------------------------------------+-----------+-----------+
|     NAME      |  STATE  |             IPV4             |                     IPV6                      |   TYPE    | SNAPSHOTS |
+---------------+---------+------------------------------+-----------------------------------------------+-----------+-----------+
| alma-lamp     | RUNNING | 10.107.73.31 (eth0)          | fd42:d70a:2761:a81b:216:3eff:fee3:7476 (eth0) | CONTAINER | 2         |
+---------------+---------+------------------------------+-----------------------------------------------+-----------+-----------+
| ubuntu-lamp   | RUNNING | 172.19.0.1 (br-1b82b9c5b955) | fd42:d70a:2761:a81b:216:3eff:fe9d:ab36 (eth0) | CONTAINER | 0         |
|               |         | 172.17.0.1 (docker0)         |                                               |           |           |
|               |         | 10.107.73.158 (eth0)         |                                               |           |           |
+---------------+---------+------------------------------+-----------------------------------------------+-----------+-----------+
| ubuntu-lamp-0 | RUNNING | 172.19.0.1 (br-1b82b9c5b955) | fd42:d70a:2761:a81b:216:3eff:fe6e:a670 (eth0) | CONTAINER | 0         |
|               |         | 172.17.0.1 (docker0)         |                                               |           |           |
|               |         | 10.107.73.112 (eth0)         |                                               |           |           |
+---------------+---------+------------------------------+-----------------------------------------------+-----------+-----------+
| ubuntu-lamp-1 | RUNNING | 172.19.0.1 (br-1b82b9c5b955) | fd42:d70a:2761:a81b:216:3eff:fe28:393a (eth0) | CONTAINER | 0         |
|               |         | 172.17.0.1 (docker0)         |                                               |           |           |
|               |         | 10.107.73.79 (eth0)          |                                               |           |           |
+---------------+---------+------------------------------+-----------------------------------------------+-----------+-----------+

删除

删除主要用于删除由copy生成的容器。您需要指定容器名称和容器数量作为参数。

root@shoma:/home/shoma/lxdcli/sample # lxdcli delete

削除するコンテナ名を指定してください
root@shoma:/home/shoma/lxdcli/sample # lxdcli delete ubuntu-lamp

削除するコンテナ数を指定してください
root@shoma:/home/shoma/lxdcli/sample # lxdcli delete ubuntu-lamp 3
>>>>>>>> lxc delete ubuntu-lamp-0 --force
+-------------+---------+------------------------------+-----------------------------------------------+-----------+-----------+
|    NAME     |  STATE  |             IPV4             |                     IPV6                      |   TYPE    | SNAPSHOTS |
+-------------+---------+------------------------------+-----------------------------------------------+-----------+-----------+
| alma-lamp   | RUNNING | 10.107.73.31 (eth0)          | fd42:d70a:2761:a81b:216:3eff:fee3:7476 (eth0) | CONTAINER | 2         |
+-------------+---------+------------------------------+-----------------------------------------------+-----------+-----------+
| ubuntu-lamp | RUNNING | 172.19.0.1 (br-1b82b9c5b955) | fd42:d70a:2761:a81b:216:3eff:fe9d:ab36 (eth0) | CONTAINER | 0         |
|             |         | 172.17.0.1 (docker0)         |                                               |           |           |
|             |         | 10.107.73.158 (eth0)         |                                               |           |           |
+-------------+---------+------------------------------+-----------------------------------------------+-----------+-----------+

如何编写LXDfile

命令文如下:

    1. 容器名:CONTAINERNAME(必填)

 

    1. 来自:容器镜像名称(必填)

 

    1. 运行:容器内执行的命令

 

    1. 添加:向容器添加文件

 

    1. 数量:容器数量

 

    端口:将容器端口公开到外部(主机IP 主机端口 容器端口 代理名称)

在LXD文件中,CONTAINERNAME是一个必需的命令。此外,CONTAINERNAME必须在FROM之前进行描述。另外,虽然NUMBER不是必需项,但如果写的话,需要将其放置在PORT之前。

這是一個例子。

CONTAINERNAME ubuntu-lamp
FROM ubuntu/23.10

RUN apt -y update
RUN apt -y install docker.io docker-compose
ADD ./docker-compose.yml /etc/
RUN docker-compose -f /etc/docker-compose.yml up -d
RUN docker ps

NUMBER 2
PORT PORT 192.168.219.40 80 80 proxy-lamp
广告
将在 10 秒后关闭
bannerAds