こんにちは、{{username}}
私はDevOpsであり、Linuxが大好きです。 そのようなバンドルでは、私はLinuX Containersを愛せずにはいられなかったことは明らかです(特にBSDとSolarisがユーザーの同様の機能に長い間喜んでいるので)。
当然、ビジネスにも魅力的な機会があり、コンテナ管理プログラムが成長し、増殖し始めました: docker 、 rocket 、 vagga 、 lxc 、 systemd-nspawnなど...
Dockerは、主にコンテンツの作成および配信システムにより、事実上の標準になっています。 しかし、メインのdockerデーモンはルートから起動されます。私の意見では、これはこのプロジェクトのマイナス( Proof )です。
Rocketとvaggaは反対の方向に進み、このパスは非特権コンテナと呼ばれます。 新しいネームスペースでプロセスを開始するためにルート権限が不要になり、テストサイトと安全な環境を構築するための興味深い見通しが開かれます。
しかし、これらのプロジェクトにはすべて致命的な欠陥が1つあります。それらはすべてc、go、rustを使用して記述されており、私はpythonが大好きで、開発に参加できません。 同意して、すべての楽しみをスキップするのは残念です。
そのため、猫の下には、新しいLinuxユーザー名前空間でプロセスを開始するためのライブラリがあります 。
パイスペース
ベイビー、あなたはただの宇宙
目標
現在、PythonのLinux名前空間を操作する便利な方法はありません。
- あなたは亡命を使用することができます-プロジェクトは死んでいるように見え、どこでホストされているか不明
- または、高レベルの抽象化でpython-libvirtバインダーを試すことができます
- vaggaやlxc doのようなcコードを使用します
- または、ctypesを使用したglibc呼び出しのヤンク
- それ以外の場合、subprocess.Popenは残ります
これを変更したい:multiprocessing.Processのようなインターフェイスを使用して、glibcライブラリへのネイティブPythonバインディングを作成したい。 そしてもう少し目標:
- Linuxを普及させる
- Pythonを普及させる
- 人気のあるオープンソースプロジェクトの作成に参加する
- 有名になる
- 人気と女の子は素敵なボーナスになります
PS: python-nsenterを見てください -それは素晴らしいですね!
例
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))
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 -c 'mount -t proc /proc; ps ax' space chroot --pid --uid '0 1000 1' ~/.local/share/lxc/ubuntu/rootfs/ /bin/ls /home/
藤堂
- [x]クローンとコンテナ
- [x] CLI
- [x] Chroot
- []プロセスリスト
- []注入する
- [] CLIを別のパッケージに移動します
- []アドオン
- [] lxc、vagga、rocket、dockerなどのサポート...
- [] ...
- []それらすべてを支配するための1つのツール!! 1
リンク集
ライセンスはMITですが、BSDとApache 2.0も追加する予定です
それは終わりではありません
行うべき作業はたくさんあります。通常のテスト、ドキュメント、新機能、素晴らしいcliが必要です。 長い箱での発表の延期はMinsk Python Meetupのメンバーによって中断されました。 今、私はコミュニティのサポートと関心を願っています;)
結論として、私はscipy&numpyの作成者を引用したいと思います。
成功の鍵:ハードワーク-特に前もって
多くの場合、孤独です-最初は、あなたよりもあなたの考えを信じている人はいません。 他の人は、参加する前に「証明」が必要です。
あなたがしているより複雑なことは、最初は孤独です。
NumPyを書くための論文を出版せずに18か月を費やしました
(多くの人が私にそれを愚かだと言っていたにもかかわらず)
トラビス・オリファント
PS:次回のMinsk Python Meetupだけでなく、トピックについてライブでチャットできます