Faire fonctionner LXC depuis Python

Aperçu

J'ai installé ubuntu 13.10 avec vagrant et l'ai testé.

Tout d'abord, installez Python 3.3

sudo apt-get install libsqlite3-dev
sudo apt-get install sqlite3 # for the command-line client
sudo apt-get install bzip2 libbz2-dev

wget http://python.org/ftp/python/3.3.3/Python-3.3.3.tar.bz2
tar jxf Python-3.3.3.tar.bz2
./configure --prefix=/opt/python3.3
make
sudo make install

sudo ln -s /opt/python3.3/bin/python3.3 /usr/bin/python

wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
sudo python3.3 ez_setup.py
sudo easy_install pip

Installation de LXC

sudo apt-get -y install lxc
sudo apt-get -y install lxctl

Essayez de faire fonctionner le conteneur virtuel LXC à partir de l'interpréteur Python

sudo python3
import lxc
c=lxc.Container("C")
c.create("ubuntu")

#En cas de succès, vous recevrez un message comme celui-ci à la fin.
#Si l'installation du module échoue au milieu, vous pouvez réussir en recommençant à partir de create.
Processing triggers for ureadahead ...
Can not write log, openpty() failed (/dev/pts not mounted?)
Setting up libdrm2:i386 (2.4.46-1ubuntu1) ...
Setting up libprocps0:i386 (1:3.3.3-2ubuntu9) ...
Setting up libudev1:i386 (204-0ubuntu19) ...
Setting up udev (204-0ubuntu19) ...
invoke-rc.d: policy-rc.d denied execution of restart.
Removing 'diversion of /bin/udevadm to /bin/udevadm.upgrade by fake-udev'
update-initramfs: deferring update (trigger activated)
Setting up initramfs-tools-bin (0.103ubuntu1.1) ...
Setting up initramfs-tools (0.103ubuntu1.1) ...
update-initramfs: deferring update (trigger activated)
Setting up procps (1:3.3.3-2ubuntu9) ...
invoke-rc.d: policy-rc.d denied execution of start.
Setting up openssh-client (1:6.2p2-6ubuntu0.1) ...
Setting up openssh-server (1:6.2p2-6ubuntu0.1) ...
invoke-rc.d: policy-rc.d denied execution of restart.
Setting up ssh (1:6.2p2-6ubuntu0.1) ...
Processing triggers for libc-bin ...
Processing triggers for initramfs-tools ...
Download complete
Copy /var/cache/lxc/saucy/rootfs-i386 to /usr/lib/i386-linux-gnu/lxc ... 
Copying rootfs to /usr/lib/i386-linux-gnu/lxc ...
Generating locales...
  en_US.UTF-8... up-to-date
Generation complete.
Creating SSH2 RSA key; this may take some time ...
Creating SSH2 DSA key; this may take some time ...
Creating SSH2 ECDSA key; this may take some time ...
invoke-rc.d: policy-rc.d denied execution of start.

##
# The default user is 'ubuntu' with password 'ubuntu'!
# Use the 'sudo' command to run tasks as root in the container.
##

#Démarrez le conteneur
c.start()

#Emplacement du fichier de configuration
c.config_file_name
'/var/lib/lxc/C/config'

#Liste des conteneurs
lxc.list_containers()
['C']

#Ecrire les paramètres
c.append_config_item("lxc.network.ipv4", "192.168.1.10/24")
c.append_config_item("lxc.network.ipv4.gateway", "192.168.1.1")
c.save_config()

#Confirmation d'adresse IP
c.get_ips()

#Attachez à la console.
c.console()

Un shell de connexion comme celui-ci sera lancé.

  Ubuntu 13.10 C tty1

  C login: 
  Password: 

Le nom d'utilisateur et le mot de passe sont ubuntu. Ctrl-a q retourne à l'interpréteur python.

Ci-dessous, la suite de l'interprète.


#Créez un clone.
clone = lxc.Container("CLONE_NAME")
clone.clone(c)
clone.start()
clone.stop()
clone.destroy()

#Jeter et quitter
c.destroy()

Un échantillon un peu plus détaillé peut être trouvé ici, veuillez donc vous y référer. https://github.com/lxc/lxc/blob/master/src/python-lxc/examples/api_test.py

Recommended Posts

Faire fonctionner LXC depuis Python
Exploitez Filemaker depuis Python
Faites fonctionner le neutron de Python!
Utiliser un écran connecté I2C à partir de Python
Utilisez DynamoDB à partir de Python comme SQL.
sql à sql
MeCab de Python
Exploitez le stockage d'objets cloud de Sakura à partir de Python
Utilisez Thingsspeak de Python
Touchez MySQL depuis Python 3
Manipuler Redmine à l'aide de Python Redmine
Utiliser fluentd de python
Accéder à bitcoind depuis python
Changements de Python 3.0 à Python 3.5
Changements de Python 2 à Python 3.0
Python depuis ou import
Exécutez Python à partir d'Excel
Installer Python à partir de la source
Utiliser Kinesis avec Python
Exécuter des commandes depuis Python
Utiliser MySQL depuis Python
Faire fonctionner Blender avec Python
Manipuler riak depuis python
Forcer Python depuis Fortran
Utilisez BigQuery depuis Python.
Exécuter la commande depuis Python
Utiliser Excel avec Python (1)
[Python] Lire depuis Stdin
Utilisez mecab-ipadic-neologd de Python
Utiliser Excel avec Python (2)
Faire fonctionner mongoDB à partir de python dans l'environnement ubuntu ① Introduction de mongoDB
[AWS] Exploitez SQS à partir du SDK (envoi / réception) [Python] [Node.js]
Aplatir à l'aide du rendement Python de
Appeler CPLEX depuis Python (DO cplex)
Deep Python appris de DEAP
Publier de Python vers Slack
Exploitez TwitterBot avec Lambda, Python
Fonctionnalités de grammaire ajoutées à partir de Python3.6
Flirter de PHP à Python
Rendre MeCab disponible à partir de Python 3
Informations obtenues à partir de tweet_id (Python)
OCR à partir de PDF en Python
Exécutez le script illustrator à partir de python
Utiliser MySQL depuis Anaconda (python)
Anaconda mis à jour de 4.2.0 à 4.3.0 (python3.5 mis à jour vers python3.6)
Étude de Python Hour4: orientée objet ②
Interroger Athena depuis Lambda Python
Accéder à Oracle DB depuis Python
Étude de Python Hour3: Fonctions
Démarrer / arrêter GCE à partir de python
Arrêtez Omxplayer à partir du code Python
Passer de python2.7 à python3.6 (centos7)
Connectez-vous à sqlite depuis python
Installez pyenv depuis Homebrew, installez Python depuis pyenv
Étude de Python Hour4: orientée objet ①
Convention de dénomination Python (à partir de PEP8)
[Python] [SQLite3] Exploiter SQLite avec Python (basique)
Avec skype, notifiez avec skype de python!
Utilisez l'API e-Stat de Python
Enregistrer le problème Redmine de Python