GNU/Linux >> Linux Esercitazione >  >> Linux

Come creare e avviare container LXC Linux con i comandi LXC

I container LXC sono un modo molto rapido per creare un ambiente virtuale pseudo.

Nel precedente articolo LXC, abbiamo spiegato come installare e configurare i container Linux LXC.

In questo tutorial, spiegheremo come creare un nuovo container Linux, avviare il container e accedere alla console virtuale LXC per utilizzare il nuovo container.

A scopo dimostrativo, in questo tutorial creeremo un contenitore virtuale CentOS LXC, ma puoi creare un contenitore virtuale praticamente per qualsiasi distribuzione Linux che desideri.

1. Modelli di contenitori LXC

Linux Containers LXC per impostazione predefinita fornisce modelli di container per diverse distribuzioni Linux popolari. Di seguito sono riportati alcuni dei modelli LXC che puoi utilizzare immediatamente.

  • CentOS
  • Ubuntu
  • Fedora
  • OpenSUSE
  • Gentoo
  • Debian
  • Oracle Linux
  • ArchLinux

Tutti i modelli LXC disponibili si trovano nella directory /usr/local/share/lxc/templates.

# ls -1 /usr/local/share/lxc/templates
lxc-alpine
lxc-altlinux
lxc-archlinux
lxc-busybox
lxc-centos
lxc-cirros
lxc-debian
lxc-download
lxc-fedora
lxc-gentoo
lxc-openmandriva
lxc-opensuse
lxc-oracle
lxc-plamo
lxc-sshd
lxc-ubuntu
lxc-ubuntu-cloud

2. Crea un contenitore usando lxc-create

Per creare il contenitore, usa il comando lxc-create come mostrato di seguito.

Nel comando seguente:

  • –n opzione indica il nome del contenitore
  • L'opzione
  • –t indica il modello utilizzato per creare il contenitore. In questo esempio, utilizziamo il modello lxc-centos per creare un contenitore CentOS.

In questo esempio, verrà creato il contenitore CentOS con l'installazione minima di centos.

Questo scaricherà tutti i pacchetti necessari per eseguire CentOS minimo (ad esempio, circa 140 pacchetti) e li installerà come parte del contenitore MyCentOSContainer1

# lxc-create -n MyCentOSContainer1 -t /usr/local/share/lxc/templates/lxc-centos
/usr/local/share/lxc/templates/lxc-centos
Host CPE ID from /etc/system-release-cpe: cpe:/o:centos:linux:6:GA
dnsdomainname: Unknown host
Checking cache download in /usr/local/var/cache/lxc/centos/x86_64/6/rootfs ... 
Downloading centos minimal ...
...
...
  Installing : libgcc-4.4.7-16.el6.x86_64       1/142 
  Installing : setup-2.8.14-20.el6_4.1.noarch   2/142 
  Installing : filesystem-2.4.30-3.el6.x86_64   3/142 
...
  Verifying  : gzip-1.3.12-22.el6.x86_64        139/142 
  Verifying  : mingetty-1.08-5.el6.x86_64       140/142 
  Verifying  : libxml2-2.7.6-20.el6_7.1.x86_64  141/142 
  Verifying  : 1:findutils-4.4.2-6.el6.x86_64   142/142 
...
Download complete.
Copy /usr/local/var/cache/lxc/centos/x86_64/6/rootfs to /usr/local/var/lib/lxc/MyCentOSContainer1/rootfs ... 
Copying rootfs to /usr/local/var/lib/lxc/MyCentOSContainer1/rootfs ...

3. Password di root per il contenitore LXC

La password di root per il container LXC è archiviata in:/usr/local/var/lib/lxc/{container-name}/tmp_root_pass

Quindi, nell'esempio sopra, per il contenitore LXC che abbiamo appena creato, la password di root temporanea è la seguente:

# cat /usr/local/var/lib/lxc/MyCentOSContainer1/tmp_root_pass
Root-MyCentOSContainer1-pf7qMB

Puoi modificare la password di root del tuo container in qualsiasi momento, anche se il tuo container è disattivato utilizzando chroot dall'host di controllo come mostrato di seguito.

# chroot /usr/local/var/lib/lxc/MyCentOSContainer1/rootfs passwd
Changing password for user root.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

4. Avvia LXC Linux Container usando lxc-start

Una volta creato il contenitore, utilizza lxc-start come mostrato di seguito per avviare il contenitore.

# lxc-start -n MyCentOSContainer1
lxc-start: cgfs.c: handle_cgroup_settings: 2077 Device or resource busy - failed to set memory.use_hierarchy to 1; continuing

CentOS release 6.6 (Final)
Kernel 2.6.32-431.el6.x86_64 on an x86_64

MyCentOSContainer1 login: init: rcS main process (8) killed by TERM signal
Entering non-interactive startup
Bringing up loopback interface:               [  OK  ]
Bringing up interface eth0:
Determining IP information for eth0... done.  [  OK  ]
Starting system logger:                       [  OK  ]
Mounting filesystems:                         [  OK  ]
Generating SSH2 RSA host key:                 [  OK  ]
Generating SSH1 RSA host key:                 [  OK  ]
Generating SSH2 DSA host key:                 [  OK  ]
Starting sshd:               				  [  OK  ]

CentOS release 6.6 (Final)
Kernel 2.6.32-431.el6.x86_64 on an x86_64

MyCentOSContainer1 login:

Se ricevi il seguente messaggio di errore "Impossibile avviare il contenitore", significa che qualcosa non va nella tua configurazione.

# lxc-start -n MyCentOSContainer1
lxc-start: lxc_start.c: main: 344 The container failed to start.
lxc-start: lxc_start.c: main: 346 To get more details, run the container in foreground mode.
lxc-start: lxc_start.c: main: 348 Additional information can be obtained by setting the --logfile and --logpriority options.

Per scoprire esattamente cosa c'è che non va nella tua configurazione, esegui il contenitore LXC in primo piano usando l'opzione -F come mostrato di seguito.

Se viene visualizzato il messaggio di errore "Impossibile collegare al bridge", "Impossibile creare netdev", "Impossibile creare la rete", l'adattatore bridge non è configurato correttamente sul sistema.

Controlla le impostazioni ifcfg-br0 che abbiamo menzionato nel nostro precedente articolo sulla configurazione di LXC Linux Container, per assicurarti di avere la configurazione del bridge impostata correttamente e funzionante.

# lxc-start -F -n MyCentOSContainer1
lxc-start: conf.c: instantiate_veth: 2796 failed to attach 'veth8VPW29' to the bridge 'lxcbr0': Operation not permitted
lxc-start: conf.c: lxc_create_network: 3079 failed to create netdev
lxc-start: start.c: lxc_spawn: 935 failed to create the network
lxc-start: start.c: __lxc_start: 1192 failed to spawn 'MyCentOSContainer1'
lxc-start: lxc_start.c: main: 344 The container failed to start.
lxc-start: lxc_start.c: main: 348 Additional information can be obtained by setting the --logfile and --logpriority options.

5. Visualizza le informazioni sul contenitore utilizzando lxc-info

Per visualizzare informazioni dettagliate sul tuo container, usa il comando lxc-info come mostrato di seguito.

# lxc-info -n MyCentOSContainer1
Name:           MyCentOSContainer1
State:          RUNNING
PID:            7696
IP:             192.168.100.101
CPU use:        1.61 seconds
BlkIO use:      32.00 KiB
Memory use:     2.63 MiB
Link:           vethLNI1UH
 TX bytes:      1.98 KiB
 RX bytes:      46.08 KiB
 Total bytes:   48.06 KiB

6. Arresta LXC Linux Container usando lxc-stop

Per interrompere il tuo contenitore Linux LXC, usa lxc-stop come mostrato di seguito e specifica il nome del contenitore che desideri interrompere.

# lxc-stop -n MyCentOSContainer1

7. Clona un contenitore esistente usando lxc-clone

La clonazione è utile quando si desidera acquisire un'istantanea del vecchio contenitore prima di apportare modifiche alla configurazione del contenitore. Puoi usarlo come un semplice metodo di backup per la configurazione del contenitore.

La clonazione del contenitore può essere eseguita utilizzando il comando lxc-clone come mostrato di seguito. In questo caso, il nuovo nome del contenitore è MyCentOSContainer2

# lxc-clone -o MyCentOSContainer1 -n MyCentOSContainer2
Created container MyCentOSContainer2 as copy of MyCentOSContainer1

8. Elimina un contenitore esistente utilizzando lxc-destory

Per eliminare un contenitore esistente, usa il comando lxc-destroy come mostrato di seguito.

# lxc-destroy -n MyCentOSContainer2

9. Connettiti a LXC Linux Container Console

Per connetterti alla console del container, usa il seguente comando lxc-console.

# lxc-console -n MyCentOSContainer1
Connected to tty 1
Type Ctrl+a q to exit the console, Ctrl+a Ctrl+a to enter Ctrl+a itself

CentOS release 6.6 (Final)
Kernel 2.6.32-431.el6.x86_64 on an x86_64

MyCentOSContainer1 login:

10. Modifica le configurazioni LXC usando lxc-config

Per modificare la configurazione LXC, puoi usare il comando lxc-config.

Per prima cosa, usa l'opzione lxc-config -l, che visualizzerà solo tutte le configurazioni disponibili come mostrato di seguito.

# lxc-config -l
lxc.default_config
lxc.lxcpath
lxc.bdev.lvm.vg
lxc.bdev.lvm.thin_pool
lxc.bdev.zfs.root
lxc.cgroup.use
lxc.cgroup.pattern

Quindi, utilizza l'opzione lxc.default_config come mostrato di seguito per visualizzare le informazioni su ciascun file di configurazione e sui parametri associati.

# lxc-config lxc.default_config
/usr/local/etc/lxc/default.conf

# cat /usr/local/etc/lxc/default.conf
lxc.network.type = veth
lxc.network.link = virbr0
lxc.network.flags = up

Il comando seguente visualizzerà la patch LXC in cui sono archiviati tutti i container.

# lxc-config lxc.lxcpath
/usr/local/var/lib/lxc

Come vediamo di seguito, vediamo i due contenitori che abbiamo creato in questa directory.

# cd /usr/local/var/lib/lxc

# ls
MyCentOSContainer1  MyCentOSContainer2

Sotto la directory del contenitore, vedrai il file di configurazione, che contiene tutte le informazioni di configurazione di base per quel particolare contenitore, come mostrato di seguito.

# cd /usr/local/var/lib/lxc/MyCentOSContainer1

# vi config
lxc.network.type = veth
lxc.network.link = virbr0
lxc.network.hwaddr = fb:bb:f2:87:e8:17
lxc.network.flags = up
lxc.rootfs = /usr/local/var/lib/lxc/MyCentOSContainer1/rootfs
lxc.include = /usr/local/share/lxc/config/centos.common.conf
lxc.arch = x86_64
lxc.utsname = MyCentOSContainer1

Linux
  1. Come disabilitare i comandi di spegnimento e riavvio in Linux

  2. Che cos'è Podman e come installare Podman in Linux

  3. Trova un file con i comandi Trova e individua in Linux

  4. Come installare KVM Linux e creare VM guest con esempi

  5. Come copiare / spostare file e directory in Linux con i comandi "cp" e "mv".

Come creare e gestire le partizioni del disco con Fdisk in Linux

Come utilizzare i comandi Pbcopy e Pbpaste su Linux

Come creare un gruppo di volumi in Linux con LVM

Come creare e utilizzare file di scambio su Linux

Procedura:Introduzione a Windows Containers e Docker

Come installare e configurare i contenitori Linux LXC su CentOS / RHEL / Ubuntu