原文はこちら。
https://blogs.oracle.com/wim/running-oracle-linux-5-applications-in-oracle-cloud-infrastructure-using-lxc
Oracle Cloud Infrastructureのベアメタルサーバおよび仮想マシンはEFI対応のOSが必要で、お客様がインスタンスに展開するためにOracle Linux 6とOracle Linux 7イメージを提供しています。ほとんどのアプリケーションはこれらのOSバージョンで動作保証およびサポートされていますが、Oracle Linux 4や5を必要とするような古いアプリケーションをお持ちになる場合もあります。現時点では、これらのバージョンをネイティブインスタンスで実行することはできませんが、Oracle Linux 4やOracle Linux 5環境を持つLinux ContainersをOracle Linux上で実行することは可能です。
長年にわたり、Oracle Linuxでは lxc をサポートしてきました。
Oracle Cloud Infrastructureで lxc を使ってみるためには、
btrfsをコンテナファイルシステムとして利用するものとします。
ブロックボリュームを作成していれば、/dev/sdbとして確認できるはずです。
続いて、以下のドキュメントを参照し、スクリプトを使って、2個目のvNICを構成します。Bare Metalインスタンスに対し、VMインスタンスでは少々違いがあります。
コンテナ構成ファイルを変更します。
直接コンテナに効率的にネットワークインターフェースをパススルーするためにvethをphysに変更します。
コンテナを起動します。
コンソールを終了するには、以下をタイプします。
注:Oracle Linux 5はExtended Supportのフェーズに入っています。詳細は以下をご覧ください。
https://blogs.oracle.com/wim/running-oracle-linux-5-applications-in-oracle-cloud-infrastructure-using-lxc
Oracle Cloud Infrastructureのベアメタルサーバおよび仮想マシンはEFI対応のOSが必要で、お客様がインスタンスに展開するためにOracle Linux 6とOracle Linux 7イメージを提供しています。ほとんどのアプリケーションはこれらのOSバージョンで動作保証およびサポートされていますが、Oracle Linux 4や5を必要とするような古いアプリケーションをお持ちになる場合もあります。現時点では、これらのバージョンをネイティブインスタンスで実行することはできませんが、Oracle Linux 4やOracle Linux 5環境を持つLinux ContainersをOracle Linux上で実行することは可能です。
長年にわたり、Oracle Linuxでは lxc をサポートしてきました。
Oracle Linux containerslxc はシステムコンテナに最適で、OS環境全体(基本的には"start /bin/init")を呼び出すことができますが、それに対しDockerは、アプリケーションの起動、つまりアプリケーション・コンテナです。確かにアプリケーションとして /bin/init を実行することはできますが、 lxcはこのモデルに対して少々チューニングされているます。汎用的なlxcのドキュメントは以下にあります。
https://blogs.oracle.com/wim/oracle-linux-containers
Oracle® LinuxAdministrator's Guide for Release 7lxc はOracle Linux 6および7で完全にサポートされており、Oracle Linux 5はlxc上のコンテナOSとして完全にサポートされています。そのため、OCIのLinuxの古いバージョン上で古いアプリケーションを実行する必要のあるお客様にとっては、これは最適な選択肢です。
Linux Containers
https://docs.oracle.com/cd/E52668_01/E54669/html/ol7-containers.html
Oracle Cloud Infrastructureで lxc を使ってみるためには、
- まずOSイメージとしてOracle Linux 7を使うベアメタルサーバもしくはVMインスタンスを作成
- 仮想クラウドネットワークを作成
- ブロック・ボリュームを作成
- ブロック・ボリュームのインスタンスへのアタッチ
Tutorial - Launching Your First Linux Instance作業手順を纏めると以下のようです。
https://docs.us-phoenix-1.oraclecloud.com/Content/GSG/Reference/overviewworkflow.htm
- コンパートメント、仮想クラウドネットワーク(VCN)、サブネットを作成
- インスタンス(ベアメタルもしくはVM)を作成
- コンテナをホストするブロック・ボリュームを作成
- VNICを作成(コンテナあたり1個)
- lxc のインストール
- コンテナを置くブロックボリュームでファイルシステムを作成し、マウント
- コンテナの作成
lxcの最新バージョン(1.1.5-2.0.9以上)であることを確認してください。# yum install lxc
...
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Updating:
lxc x86_64 1.1.5-2.0.9.el7 ol7_latest 231 k
Updating for dependencies:
lxc-libs x86_64 1.1.5-2.0.9.el7 ol7_latest 219 k
Transaction Summary
================================================================================
Upgrade 1 Package (+1 Dependent package)
Total download size: 450 k
Is this ok [y/d/N]:
btrfsをコンテナファイルシステムとして利用するものとします。
ブロックボリュームを作成していれば、/dev/sdbとして確認できるはずです。
Tutorial - Launching Your First Linux Instance
Adding a Block Volume
https://docs.us-phoenix-1.oraclecloud.com/Content/GSG/Tasks/addingstorage.htm
fdiskでパーティションを作成しますが、今回は簡単のためにボリューム全体を使って1個のパーティションを作成します。$ cat /proc/partitions
major minor #blocks name
8 0 48838656 sda
8 1 556988 sda1
8 2 8420348 sda2
8 3 39808260 sda3
8 16 134217728 sdb
以下のような表示になることでしょう。$ fdisk /dev/sdb
Enter n (new partition), p (primary partition) 1 (first partition on new volume) and hit enter twice if you want to use the entire Block Volume.
Enter w to write the partition table out to disk.
btrfsボリュームを作成し、そのボリュームを/containerにマウントします。$ cat /proc/partitions
major minor #blocks name
8 0 48838656 sda
8 1 556988 sda1
8 2 8420348 sda2
8 3 39808260 sda3
8 16 134217728 sdb
8 17 134216704 sdb1
lxcのインストールで既にサーバの/containerディレクトリを作成しています。$ mkfs.btrfs /dev/sdb1
$ echo "/dev/sdb1 /container btrfs defaults,noatime,_netdev 0 2"> /etc/fstab
$ mount -a
続いて、以下のドキュメントを参照し、スクリプトを使って、2個目のvNICを構成します。Bare Metalインスタンスに対し、VMインスタンスでは少々違いがあります。
Overview of Networking - Virtual Network Interface Cards (VNICs)1個目のlxcコンテナを作成します。構文は以下の通りです。
https://docs.us-phoenix-1.oraclecloud.com/Content/Network/Tasks/managingVNICs.htm?Highlight=secondary_vnic
lxc-create -n <container name> -t <template> -- -R <release>
- container nameには利用したいコンテナ名を指定します。例えば、ol5とします。
- Oracle Linuxコンテナを作成するために、templateとして"oracle"テンプレートを使います。
- releaseでは、利用したいコンテナOSのリリースを指定します。今回はOracle Linux 5コンテナを作成しているので、-R 5.latest を使います。
- Oracle Linux 4、6、7の場合、同じ "oracle"テンプレートを使いますが、<release> を4.latest、6.latest、7.latestに変更します。
新規作成したコンテナのネットワーク構成を変更するという、追加の構成が必要です。$ lxc-create -n ol5 -t oracle -- -R 5.latest
Host is OracleServer 7.3
Create configuration file /container/ol5/config
Yum installing release 5.latest for x86_64
...
Added container user:oracle password:oracle
Added container user:root password:root
Container : /container/ol5/rootfs
Config : /container/ol5/config
Network : eth0 (veth) on lxcbr0
コンテナ構成ファイルを変更します。
このファイルの以下の行$ vi /container/ol5/config
を、次のように変更します。lxc.network.type = veth
lxc.network.link = lxcbr0
lxc.network.hwaddr = 00:16:3e:xx:xx:xx <- where xx:xx:xx has assigned values
lxc.network.hwaddr の行はコメントアウトもしくは削除します。lxc.network.type = phys
lxc.network.link = ens2f0.vlan.1 or ens4 or whatever name of the secondary vnic interface created earlier was called
スクリプトが生成するインターフェースのMACアドレスを利用したいので、hwaddrの行をコメントアウトすることをお奨めします。#lxc.network.hwaddr =
直接コンテナに効率的にネットワークインターフェースをパススルーするためにvethをphysに変更します。
コンテナを起動します。
コンソールに接続します。$ lxc-start -n ol5.1
デフォルトの$ lxc-console -n ol5.1
root
パスワードは root
です。コンテナ作成後変更してください。コンソールを終了するには、以下をタイプします。
以下のURLを確認すると、コンテナ内のネットワークを構成します。VNICのIP構成をインスタンス内から見つけることができます。ctrl-a q
以下は手作業で実施します。$ wget http://169.254.169.254/opc/v1/vnics/
新たにifcfgスクリプトを作成し、起動時にネットワークを構成するようにします。$ ifconfig eth0 10.0.2.3 netmask 255.255.255.0
$ route add default gw 10.0.2.1
/etc/sysconfig/network-scripts/ifcfg-eth0
を編集します。編集例は以下の通りです。どのlxcコンテナがアクティブかを確認するには、以下のコマンドを使います。DEVICE="eth0"
BOOTPROTO=none
ONBOOT=yes
TYPE="Ethernet"
IPADDR=10.0.2.3
PREFIX=24
GATEWAY=10.0.2.1
DEFROUTE=yes
このコンテナはOracle Linux 7上で動作する、サポートされるOracle Linux 5環境ができあがりました。$ lxc-ls --active
注:Oracle Linux 5はExtended Supportのフェーズに入っています。詳細は以下をご覧ください。
Oracle Linux 5 Extended Support Data SheetOracle Cloud Subscriptionのお客様は、SubscriptionにExtended Supportが含まれています。追加料金や手数料は不要です。
http://www.oracle.com/us/technologies/linux/oracle-linux-5-extended-support-3662088.pdf