可以像 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
命令文如下:
-
- 容器名:CONTAINERNAME(必填)
-
- 来自:容器镜像名称(必填)
-
- 运行:容器内执行的命令
-
- 添加:向容器添加文件
-
- 数量:容器数量
- 端口:将容器端口公开到外部(主机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