オペレーティングシステムは、コンピュータのハードウェア管理、ファイル管理、データの入出力と管理、アプリケーションプログラムやユーティリティの実行、ユーザーとの対話などを効率的に行うための制御・処理プログラムの基本セットです。
オペレーティングシステムは、コンピュータのハードウェア管理、ファイル管理、データの入出力と管理、アプリケーションプログラムやユーティリティの実行、ユーザーとの対話などを効率的に行うための制御・処理プログラムの基本セットです。
この記事ははてなエンジニアアドベントカレンダー2015の1日目です。今回は、既存の運用フローに乗せやすいDockerイメージへのchrootによるデプロイの考え方と自作のコンセプトツール droot を紹介します。 github.com 背景 Docker 本番導入の課題 Docker 導入の目的 Docker + chroot のアイデア droot: Dockerイメージにchrootするコンテナツール droot の使い方 droot push: Dockerイメージをtar ball化しS3にpushする droot pull: S3にpushしたイメージをダウンロードし展開する droot run: 展開先のディレクトリにchrootする droot の実装 droot push/pull の実装 droot run の実装 あわせて読みたい あとがき 背景 Dockerがリリー
実効ユーザ ID が root ならば、chroot(2) システムコールを使うことで、設定済の chroot を無効にできることは chroot(2) の man ページに明記されています。chroot(2) がカレント・ディレクトリを変更しないため、特定の状況下で相対パスで chroot したディレクトリの外をアクセスできることを短い sh の実証スクリプト付きで説明されています。では、カーネル内部ではどのようなことが生じているのでしょうか。だいたい想像はできるのですが、ソースコードを読み込んでみました。 読み込みは chroot システムコールを処理する sys_chroot 関数から始めました。この関数は、__user_walk 関数を使って、パス名を格納した文字列を元に nameidata 構造体 nd に vfsmount 構造体へのポインタを nd.mnt と、dentry
既にクリスマスになってますが、これはGentoo Advent Calendarの4日目です。ひでぇな俺。 Gentooのインストール中にchrootして実環境を構築するフェーズで、/devと/procをマウントする手順がHandbookで紹介されています。 mount -o bind /dev /mnt/gentoo/dev mount -t proc none /mnt/gentoo/proc chroot /mnt/gentoo /bin/bash そういう場合は/sysもマウントしてやるといいと思います。 mount -o bind /dev /mnt/gentoo/dev mount -t proc none /mnt/gentoo/proc mount -o bind /sys /mnt/gentoo/sys chroot /mnt/gentoo /bin/bash さらにいえ
CentOSではNTPデーモンがntpユーザ権限で動作している。root権限で動いていないということで『一応安全を意識してるんだな』ぐらいにしか思っていなかった。 しかし、システム時刻を変更というrootしかできない行為をntpユーザが行っていることの不思議に(今更)気がついたので調べてみた。 これはCapability(ケーパビリティ)と呼ばれる機能を使用して実現されている。 Capability は『強大すぎるroot権限』を30-40個程度のおおまかな小さな権限(それぞれをCAP0, CAP1, ..., CAPnとしておく)に分割し、プロセスごとに 『CAPx と CAPy のみ許可』 のような設定をできるようにする仕組みである。 26種類目のCAP (CAP25) が『CAP_SYS_TIME』(include/linux/capability.h で定義) であり、『システム時
virtualingとはkazuhoさんの低コストでchrootするためのjailingと、mruby-virtualingによるリソース制御や必要であればIPアドレスの付与する機能を組み合わせたツールです。virtualingを使うと、Rubyコードによって、リソース制御可能なchroot環境でミドルウェアやコマンドを実行させることができます。 https://github.com/matsumoto-r/mruby-virtualing 例えば、とあるhttpdをvirtualingで動かしたい時は、以下のようなコードを書きます。 Virtual.new({ :resource => { # CPU [msec] exc: 30000 -> 30% :cpu_quota => 30000, # IO [Bytes/sec] 10 Mbyte/sec :blk_dvnd => "202:
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く