Проверка за наличие на образи.
lxc image list To start your first container, try: lxc launch ubuntu:22.04 Or for a virtual machine: lxc launch ubuntu:22.04 --vm +-------+-------------+--------+-------------+--------------+------+------+-------------+ | ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCHITECTURE | TYPE | SIZE | UPLOAD DATE | +-------+-------------+--------+-------------+--------------+------+------+-------------+
Нямаме налични образи. Да проверим какви образи можем да заредим.
lxc image list ubuntu:
Показва всички налични образи на виртуални машини и контейнери ubuntu. Може да филтрираме.
lxc image list ubuntu: | grep 22.04 | grep CONTAINER
Всички налични ubuntu образи версии 22.04 за контейнери. Да проверим къде търсим за образи:
lxc remote list | NAME | URL | PROTOCOL | AUTH TYPE | PUBLIC | STATIC | GLOBAL| ------------------------------------------------------------------------------------------------------------------------ | images | https://images.linuxcontainers.org | simplestreams | none | YES | NO | NO | | local (current) | unix:// | lxd | file access | NO | YES | NO | | ubuntu | https://cloud-images.ubuntu.com/releases | simplestreams | none | YES | YES | NO | | ubuntu-daily | https://cloud-images.ubuntu.com/daily | simplestreams | none | YES | YES | NO |
До тук всичко работи но с някакви проблеми. За начало имаме образи само на ubuntu. Ако проверим:
lxc image list images:
Ще видим, че нямаме никакви образи. За целта ще обновим образите.
lxc remote set-url images https://images.lxd.canonical.com
И сега ако пробваме да видим какви налични образи можем да изтеглим:
lxc image list images:
Ще се покажат образи за виртуални машини и контейнери на най-различни дистрибуции. Може да филтрираме. Примерно търсим само контейнери, на основа Debian и с архитектура amd64.
lxc image list images: | grep CONTAINER | grep 'debian/10' | grep amd64 | debian/10 (7 more) | be9bcd10796f | yes | Debian buster amd64 (20240621_0002) | x86_64 | CONTAINER | 76.77MB | Jun 21, 2024 at 12:00am (UTC) | | debian/10/cloud (3 more) | 34b7f0b781b2 | yes | Debian buster amd64 (20240621_0002) | x86_64 | CONTAINER | 92.10MB | Jun 21, 2024 at 12:00am (UTC) |
Ще смъкнем образ Debian 10 и ще му дадем име debian.
lxc launch images:be9bcd10796f debian Creating debian Retrieving image: rootfs: 70% (1.81MB/s) Starting debian
Когато сваляте образ за виртуална машина, не за контейнер:
lxc launch images:be9bcd10796f debian --vm
Да проверим какви образи имаме смъкнати.
lxc image list +-------+--------------+--------+-------------------------------------+--------------+-----------+---------+------------------------------+ | ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCHITECTURE | TYPE | SIZE | UPLOAD DATE | +-------+--------------+--------+-------------------------------------+--------------+-----------+---------+------------------------------+ | | be9bcd10796f | no | Debian buster amd64 (20240621_0002) | x86_64 | CONTAINER | 76.77MB | Jun 21, 2024 at 9:21am (UTC) | +-------+--------------+--------+-------------------------------------+--------------+-----------+---------+------------------------------+
Имаме един смъкнат образ.
lxc image info be9bcd10796f Fingerprint: be9bcd10796fbe113474d5363c3a9d0d346d18c1ea0c733bee00ad51333a8d3d Size: 76.77MB Architecture: x86_64 Type: container Public: no Timestamps: Created: 2024/06/21 00:00 UTC Uploaded: 2024/06/21 09:21 UTC Expires: never Last used: 2024/06/21 09:21 UTC Properties: os: Debian release: buster serial: 20240621_0002 type: squashfs variant: default architecture: amd64 description: Debian buster amd64 (20240621_0002) Aliases: Cached: yes Auto update: enabled Source: Server: https://images.lxd.canonical.com Protocol: simplestreams Alias: be9bcd10796f Profiles: - default lxc image show be9bcd10796f auto_update: true properties: architecture: amd64 description: Debian buster amd64 (20240621_0002) os: Debian release: buster serial: "20240621_0002" type: squashfs variant: default public: false expires_at: 1970-01-01T00:00:00Z profiles: - default
lxc image delete be9bcd10796f
lxc list +--------+---------+-----------------------+-----------------------------------------------+-----------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +--------+---------+-----------------------+-----------------------------------------------+-----------+-----------+ | debian | RUNNING | 10.113.124.208 (eth0) | fd42:3c4e:517f:ed86:216:3eff:fe33:6f7f (eth0) | CONTAINER | 0 | +--------+---------+-----------------------+-----------------------------------------------+-----------+-----------+
lxc stop debian lxc ls +--------+---------+------+------+-----------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +--------+---------+------+------+-----------+-----------+ | debian | STOPPED | | | CONTAINER | 0 | +--------+---------+------+------+-----------+-----------+ lxc start debian lxc ls +--------+---------+-----------------------+-----------------------------------------------+-----------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +--------+---------+-----------------------+-----------------------------------------------+-----------+-----------+ | debian | RUNNING | 10.113.124.208 (eth0) | fd42:3c4e:517f:ed86:216:3eff:fe33:6f7f (eth0) | CONTAINER | 0 | +--------+---------+-----------------------+-----------------------------------------------+-----------+-----------+
За да се преименува даден контейнер, той трябва да е спян.
lxc move debian debian10 lxc ls +----------+---------+------+------+-----------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +----------+---------+------+------+-----------+-----------+ | debian10 | STOPPED | | | CONTAINER | 0 | +----------+---------+------+------+-----------+-----------+
lxc restart debian10
lxc delete debian10
Може да се клонира контейнер даже да е пуснат.
lxc copy debian10 debian
lxc config show debian
Примерно да видим IP адреса на контейнера.
lxc exec debian -- ip a
Съдържанието на дадена папка може да се види с:
lxc exec debian -- ls /var/log/ alternatives.log apt bootstrap.log btmp dpkg.log faillog lastlog private wtmp
Можем да влезем също така в самия контейнер, в конзолата му.
lxc exec debian -- bash ### За изход от конзолата: exit
Да зададем парола на root в контейнера.
lxc exec debian passwd root New password: contPa$$ Retype new password: contPa$$ passwd: password updated successfully
lxc console debian ### Показва с коя комбинация от клавиши се излиза от конзолата To detach from the console, press: <ctrl>+a q ### Натискаме Enter debian login: root Password: contPa$$ Linux debian 6.1.0-22-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.94-1 (2024-06-21) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. root@debian:~# ### За изход от login root@debian:~# exit logout Debian GNU/Linux 10 debian console debian login: ### За изход от конзолата натискаме клавишна комбинация: <ctrl>+a сляд това натискаме q
Пръво да създадем някакъв файл със съответното му съдържание.
echo Тest >> /test.txt cat /test.txt Test
Да преместим файла /test.txt в контейнера.
lxc file push /test.txt debian/tmp/file_in_container.txt
Добавихме файла test.txt, който беше в главната папка на ОС в контейнера в папка /tmp и му дадохме ново име file_in_container.txt Да проверим:
lxc exec debian -- ls /tmp file_in_container.txt lxc exec debian -- cat /tmp/file_in_container.txt Test
Да изтрием файла който не е в контейнера.
rm /test.txt
lxc file pull debian/tmp/file_in_container.txt /test.txt ls / bin boot dev etc home initrd.img initrd.img.old lib lib64 media mnt opt proc root run sbin srv sys test.txt tmp usr var vmlinuz vmlinuz.old cat /test.txt Test