ぐうたらパンダはお昼寝中

 全力でだらだらしてます。ぐうたらなので、書いていることは適当です。ときどき起きては,気が向いたこと書いています。プログラミングの記事は,Qiitaで書いています.

カテゴリ: ubuntu12

まがりなりにもLXC使っていましたが、最近、良記事を発見しました。

orangain flavor
2013-06-06 さくらVPSでLXCを使って安価に複数台構成を実現する

自分の設定にいろいろ問題があり、コンテナにサーバーを立てようとしても、うまくサーバーとして、機能しない場合も多かったので、この記事に従ってLXCのコンテナを再構築しました。

とりあえずRstudioと、自分ではずっとインストールすら失敗したGitLabコンテナを作成してみましたが、サーバーを動かせるようになりました。

※(2013/6/17) この記事は記録として残してありますが、LXCは再構築しました。こちらの記事を御覧ください。

iptablesの設定は、いろいろありますが、ググれば良い解説がいろいろあるのでLXC絡みのところだけ書くことにします。

ubuntuの場合、iptablesを設定方法が独特です。こちらを見て設定方法がわかりました。
 サーバ起動時にiptblesを設定する(Ubuntu編) 

ということで、設定方法が分かったところで、一つ設定してみます。

 LXCで作ったコンテナで、仮にIPアドレスが10.0.3.101で設定してあるとします。
ここにWebサーバーをたちあげるとします。

シンプルな状況を仮定して、ホストにポート80を通してWebサーバーにアクセスがあった場合、それを10.0.3.101に転送したいとします。

・・・全然わからんな。ということでググってみることにします。ありました。
外部から特定の内部サーバへのアクセスを許可

これは自分用にアレンジすればなんとかなりそうです。というか、丸写しでなんとかなりました。もちろんIPやポート番号の設定は必要です。特に、このリンク先にでている設定を使う時は、my_internet_ipの設定を忘れないようにしましょう。

それから、設定し終わったら、最初のリンク先にあるようなやり方で、設定をファイルに書き出さないと電源が消えると設定消えてしまいますよ。(私の場合消えた。)

※(2013/6/17) この記事は記録として残してありますが、LXCは再構築しました。こちらの記事を御覧ください。

これが難関。ネットワークの設定です。昔はかなり大変だったようで、検索するとそれなりにやり方がヒットします。ところが、ちょっとでもバージョンが違うとうまくいきません。(もちろんわかっている人が完全に理解して、自分でアレンジしながら設定するなら別です。)

今回はできるだけ簡単に設定することにします。次のような形です。
インターネット > ホスト <仮想プライベートネットワーク> ゲスト(コンテナ)

 プライベートネットワークは今回は物理的なものではなく、あくまでもホストのOS上にソフトウェア的に実装される仮想ネットワークです。

 LXCをインストールして、コンテナを作って、ネットに関して特に何も設定しないで起動した場合、lxcbr0というネットワークに自動的に接続されます。今回のバージョンでは、特に設定しなくても、プライベートネットワーク内なら特に設定しなくても接続することができます。というか、よくわからず、古いバージョンの説明を読んで下手に設定しようとすると、接続できなくなりました(私の場合)。

 ホストとゲストは、プライベートIPアドレスを振ってネットワークを形成させます。 実は、結果的には何もせっていしないとコンテナにはDHCPで勝手にIPを割り振ってくれます。ただ今回は、コンテナではサーバーを動かす予定で、IPが変わると不便なのでプライベートIPは固定することにします。コンテナに何かをインストールするとIP固定しなくても名前で解決できるように設定できるそうなのですが、難しそうだったのでやめておきます。

 まずコンテナのIPを固定します。 これはホストにある各コンテナの設定ファイルに書き加えます。設定ファイルは、
 
/var/lib/lxc/仮想マシン名/config
です。たとえば、hoge1というコンテナを作ったのだとすると、ホストに
/var/lib/lxc/hoge1/config
というファイルができます。これをエディタで編集します。root権限が必要です。
lxc.network.type=veth
lxc.network.link=lxcbr0
lxc.network.flags=up
lxc.network.hwaddr = 00:00:00:00:00:00
lxc.utsname = hoge1
lxc.network.ipv4= IP4アドレス (この行を追加)

以下省略 
という感じで書き加えます。これはIP4の場合です。これでコンテナを起動した時にIPが固定されます。
次に/etc/hostsファイルを編集します。
127.0.0.1       localhost
10.0.3.11      hoge1.example.net       hoge1
10.0.3.102     hoge2.example.net      hoge2

以下略
ここでは2つのコンテナの名前の解決をできるようにしています。example.netは自分のドメインだとします。その後ろにもう一つ書いてあるhoge1というのはエイリアスで、書かなくても良いのですが書いておくと、プライベートネットワーク内で省略系で書けるので、一応、書いておくことにします。

それから、これはホストに設定しているので、コンテナ内からは見えません。ですからあるコンテナから別のコンテナを呼び出したい場合で、IPで指定するのがいやな場合は、/etc/hostsを各コンテナ毎に設定する必要があります。

次回は、iptablesの設定です。

※(2013/6/17) この記事は記録として残してありますが、LXCは再構築しました。こちらの記事を御覧ください。

ubuntu12上でのLXCのコマンドをまとめてくれている方がおりました。

Ubuntu 12.04 で LXC(絶対無糖)

情報が少ないだけに、こういうまとめはありがたいのです。LXCは、よく使うコマンドは実はそんなに多くはなさそうです。

ということで、仮想環境を作成してみます。仮想環境はLXCではコンテナと呼びます。

仮想環境なので、ubuntu12上で別のOSを動かすこともできます。LXC上にゲストOSをインストールする場合、インストール時の設定ファイルをテンプレートといいます。LXCをデフォルトで入れた場合は、ubuntuの他にもfedoraなどのOSのテンプレートが準備されています。 しかし、 慣れないうちはubuntuにしておくのが無難です。

 なぜかというと、コンテナにインストールされるOSは最低限のものしかインストールされていないので、自分でいろいろインストールしたり設定したりしないといけないからです。たとえば、ubntuのテンプレートでゲストOSをインストールした直後は、apt-getは使えますが、aptitudeやwgetはインストールしないと使えません。 fedora等も試してみましたが、この状況は同じです。ということで、私はへんな好奇心を起こさずubuntuのテンプレートを当分使うことにします。

 コンテナの作成方法ですが、lxcをインストール済みとして
sudo lxc-create -t ubuntu -n コンテナ名(自分でつける)
とします。
  • -t はテンプレートの名前を指定するオプションです。インストールされているテンプレート名しか指定できません。
  • -n はコンテナ名を指定するオプションです。好きな名前を付けられます。
1つ目のコンテナを作る時は結構時間がかかるようです。2つ目以降は多少時間は短縮されます。

次回はコンテナを起動する前に、ネットワークの設定をします。

※(2013/6/17) この記事は記録として残してありますが、LXCは再構築しました。こちらの記事を御覧ください。

何度か失敗して、OSを入れなおすはめになりました。その結果です。

さくらのVPS2Gにubuntu12をインストール済みで、ホストのOSのセキュリティやユーザー作成の設定等の基本的な設定が 済んでいるとします。


lxcのインストールですが、いろいろ書いてあるページがありますけれども、初心者は、とりあえず
sudo apt-get install lxc
だけで良いです。というか、よく理解せずにいじるとサーバーがおかしくなります(私の場合)。

問題はLXCは、まだ歴史がそんなになく、資料が少ないので、どのバージョンのLXCを、どのバージョンのどのディストリビューションのLINUX上で、どういう設定をしようとしたかで、全然設定方法が全くといっていいほど(と私には思えた)変わってしまっています。下手に真似した私は、だいぶ時間を無駄にしました。まさに、「生兵法は怪我のもと」です。

仮想環境はとりあえず、いきなりネットに公開されるわけではないので、ホストのOSの設定がきちんとしてあって、余計な事しなければ(これ重要。経験者は語る)、いきなりひどいことには、ならないと思います。

次回はコンテナの作成です。

次回は、コンテナ(仮想環境)の作り方です。

このページのトップヘ