Betreiben Sie LXC von Python aus

Überblick

Ich habe Ubuntu 13.10 mit Vagrant installiert und darauf getestet.

Installieren Sie zunächst 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

LXC-Installation

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

Versuchen Sie, den virtuellen LXC-Container über den Python-Interpreter zu bedienen

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

#Bei Erfolg erhalten Sie am Ende eine solche Nachricht.
#Wenn die Modulinstallation in der Mitte fehlschlägt, können Sie erfolgreich sein, indem Sie von vorne beginnen.
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.
##

#Starten Sie den Container
c.start()

#Speicherort der Konfigurationsdatei
c.config_file_name
'/var/lib/lxc/C/config'

#Liste der Container
lxc.list_containers()
['C']

#Einstellungen schreiben
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()

#Bestätigung der IP-Adresse
c.get_ips()

#An die Konsole anschließen.
c.console()

Eine solche Login-Shell wird gestartet.

  Ubuntu 13.10 C tty1

  C login: 
  Password: 

Der Benutzername und das Passwort sind Ubuntu. Strg-a q kehrt zum Python-Interpreter zurück.

Unten ist die Fortsetzung des Dolmetschers.


#Erstellen Sie einen Klon.
clone = lxc.Container("CLONE_NAME")
clone.clone(c)
clone.start()
clone.stop()
clone.destroy()

#Verwerfen und beenden
c.destroy()

Ein etwas detaillierteres Beispiel finden Sie hier. Bitte beziehen Sie sich darauf. https://github.com/lxc/lxc/blob/master/src/python-lxc/examples/api_test.py

Recommended Posts

Betreiben Sie LXC von Python aus
Bedienen Sie Filemaker von Python aus
Bedienen Sie Neutronen von Python!
Bedienen Sie ein mit I2C verbundenes Display über Python
Betreiben Sie DynamoDB von Python aus wie SQL.
SQL zu SQL
MeCab von Python
Betreiben Sie den Cloud-Objektspeicher von Sakura von Python aus
Verwenden Sie thingspeak aus Python
Berühren Sie MySQL in Python 3
Bearbeiten Sie Redmine mit Python Redmine
Verwenden Sie fließend Python
Greifen Sie über Python auf Bitcoind zu
Änderungen von Python 3.0 zu Python 3.5
Änderungen von Python 2 zu Python 3.0
Python aus oder importieren
Führen Sie Python aus Excel aus
Installieren Sie Python von der Quelle
Kinesis mit Python betreiben
Führen Sie Befehle aus Python aus
Verwenden Sie MySQL aus Python
Betreiben Sie Blender mit Python
Manipuliere Riak aus Python
Erzwinge Python aus Fortran
Verwenden Sie BigQuery aus Python.
Führen Sie den Befehl von Python aus
Betreiben Sie Excel mit Python (1)
[Python] Von Stdin lesen
Verwenden Sie mecab-ipadic-neologd von Python
Betreiben Sie Excel mit Python (2)
Betreiben Sie mongoDB von Python in einer Ubuntu-Umgebung. ① Einführung von mongoDB
[AWS] SQS über SDK betreiben (Senden / Empfangen) [Python] [Node.js]
Mit Python abflachen
Rufen Sie CPLEX von Python aus auf (DO cplex)
Deep Python hat von DEAP gelernt
Post von Python nach Slack
Betreiben Sie TwitterBot mit Lambda, Python
Grammatikfunktionen aus Python3.6 hinzugefügt
Flirte von PHP nach Python
Stellen Sie MeCab in Python 3 zur Verfügung
Informationen von tweet_id (Python)
OCR aus PDF in Python
Führen Sie das Illustrator-Skript von Python aus
Verwenden Sie MySQL von Anaconda (Python)
Anaconda aktualisiert von 4.2.0 auf 4.3.0 (python3.5 aktualisiert auf python3.6)
Studie aus Python Hour4: Objektorientiert ②
Fragen Sie Athena von Lambda Python ab
Greifen Sie über Python auf Oracle DB zu
Studie aus Python Hour3: Funktionen
Starten / Stoppen von GCE über Python
Stoppen Sie Omxplayer vom Python-Code
Wechseln Sie von Python2.7 zu Python3.6 (centos7)
Stellen Sie von Python aus eine Verbindung zu SQLite her
Installieren Sie pyenv von Homebrew, installieren Sie Python von pyenv
Studie aus Python Hour4: Objektorientiert ①
Python-Namenskonvention (ab PEP8)
[Python] [SQLite3] Betreiben Sie SQLite mit Python (Basic)
Mit Skype benachrichtigen Sie mit Skype von Python!
Verwenden Sie die e-Stat-API von Python
Registrieren Sie das Redmine-Problem von Python