Create process in linux namespaces
Project description
Works with Linux namespaces througth glibc with pure python
Goals
There is so many beautiful tools like docker, rocket and vagga written on go and rust, but no one on python. I think that is because there is no easy way to works with linux namespaces on python:
you can use asylum - project that looks like dead and with codebase hosted not on mainstream hub like github
or you can use python-libvirt bindings with big layer of abstraction
or just use native glibc library with ctypes
otherwise subprocess.Popen your choice
I want to change it: i want to create native python bindings to glibc with interface of python multiprocessing.Process.
Example
First simple example:
import os
from pyspaces import Container
def execute(argv):
os.execvp(argv[0], argv)
cmd = "mount -t proc proc /proc; ps ax"
c = Container(target=execute, args=(('bash', '-c', cmd),),
uid_map='0 1000 1',
newpid=True, newuser=True, newns=True
)
c.start()
print("PID of child created by clone() is %ld\n" % c.pid)
c.join()
print("Child returned: pid %s, status %s" % (c.pid, c.exitcode))
output:
PID of child created by clone() is 15978
PID TTY STAT TIME COMMAND
1 pts/19 S+ 0:00 bash -c mount -t proc proc /proc; ps ax
3 pts/19 R+ 0:00 ps ax
Child returned: pid 15978, status 0
CLI
space -v execute --pid --fs --user --uid '0 1000 1' bash
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file pyspaces-1.1.3.tar.gz
.
File metadata
- Download URL: pyspaces-1.1.3.tar.gz
- Upload date:
- Size: 6.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7e9e6da4dd60f56963bf2acb90e13b92c86b05f3fd11f6aab510c9bcc3bd99d8 |
|
MD5 | 72cb2a3f941930ab9f599ef22091ec33 |
|
BLAKE2b-256 | 0a04e5122a379e4763a2513864889e900ac16dde5a8e06382ead7b6012600477 |