VZNopeというOpenVZ wrapperの紹介 (2)
コンテナの一覧を見てみる
vzn list コマンドで、出来上がったコンテナの概要を一覧でみることができます。
~$ vzn list
VEID NAME COMMIT STATUS IP_ADDRESS PHYSPAGES SWAPPAGES DISKSPACE CPUUNITS
----------------------------------------------------------------------------------------------------------------------------------
101 kangaroo_gold 5970b35 running 192.168.230.101 0:256M 0:512M 2G:2.2G 1000
----------------------------------------------------------------------------------------------------------------------------------
ここでは、kangaroo_goldなんて名前でコンテナが作られたのがわかりますね。その他、稼働状況やIPアドレス、メモリやディスク、CPUリソースの割り当てなんかも、この一覧で見ることができます。COMMITについては後ほど解説します。
コンテナの中で何かを実行する
出来上がったコンテナにmysql-serverを入れてみます。コンテナに対して変更を加える際、基本的には vzn exec コマンドを通して実際のコマンドを実行します。vzn exec コマンドは、指定したコンテナにて、与えられたコマンドをコンテナのroot権限で実行します。文法は以下の通り。
vzn exec [コンテナIDまたはコンテナ名] [実行させたいコマンド]
その前に、yum updateを実行して、パッケージ情報の更新をしておきましょう。
vzn exec kangaroo_gold yum -y update
mysql-serverを入れてみる
ではいよいよmysqlのインストールです。今回はyumを使ってインストールしてみます。
centos6でyumを使ってmysqlを入れる場合には yum install mysql-server などのようなコマンドを実行すると思いますが、それをほぼそのまま vzn exec コマンドの引数として渡してあげるのです。
vzn exec kangaroo_gold yum install mysql-server
しかし、このままですとmysql-serverはインストールできません。どうして?それは、通常yum installは本当に指定したパッケージをインストールするかどうかをy/nで質問してきますし、デフォルトがNなので、インストールされずにコマンドが終了してしまうのです。ですので、実際にmysql-serverをインストールしたければ、
vzn exec kangaroo_gold yum -y install mysql-server
とする必要があります。実際に実行してみると、以下のように特に問題なくインストールされました。
~$ vzn exec kangaroo_gold yum -y install mysql-server
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.tsukuba.wide.ad.jp
* extras: ftp.tsukuba.wide.ad.jp
* updates: ftp.tsukuba.wide.ad.jp
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package mysql-server.x86_64 0:5.1.73-3.el6_5 will be installed
--> Processing Dependency: mysql = 5.1.73-3.el6_5 for package: mysql-server-5.1.73-3.el6_5.x86_64
--> Processing Dependency: perl-DBI for package: mysql-server-5.1.73-3.el6_5.x86_64
--> Processing Dependency: perl-DBD-MySQL for package: mysql-server-5.1.73-3.el6_5.x86_64
--> Processing Dependency: perl(DBI) for package: mysql-server-5.1.73-3.el6_5.x86_64
--> Processing Dependency: libmysqlclient_r.so.16(libmysqlclient_16)(64bit) for package: mysql-server-5.1.73-3.el6_5.x86_64
--> Processing Dependency: libmysqlclient.so.16(libmysqlclient_16)(64bit) for package: mysql-server-5.1.73-3.el6_5.x86_64
--> Processing Dependency: libmysqlclient_r.so.16()(64bit) for package: mysql-server-5.1.73-3.el6_5.x86_64
--> Processing Dependency: libmysqlclient.so.16()(64bit) for package: mysql-server-5.1.73-3.el6_5.x86_64
--> Running transaction check
---> Package mysql.x86_64 0:5.1.73-3.el6_5 will be installed
---> Package mysql-libs.x86_64 0:5.1.73-3.el6_5 will be installed
---> Package perl-DBD-MySQL.x86_64 0:4.013-3.el6 will be installed
---> Package perl-DBI.x86_64 0:1.609-4.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
mysql-server x86_64 5.1.73-3.el6_5 updates 8.6 M
Installing for dependencies:
mysql x86_64 5.1.73-3.el6_5 updates 894 k
mysql-libs x86_64 5.1.73-3.el6_5 updates 1.2 M
perl-DBD-MySQL x86_64 4.013-3.el6 base 134 k
perl-DBI x86_64 1.609-4.el6 base 705 k
Transaction Summary
================================================================================
Install 5 Package(s)
Total download size: 12 M
Installed size: 33 M
Downloading Packages:
--------------------------------------------------------------------------------
Total 4.7 MB/s | 12 MB 00:02
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : mysql-libs-5.1.73-3.el6_5.x86_64 1/5
Installing : perl-DBI-1.609-4.el6.x86_64 2/5
Installing : perl-DBD-MySQL-4.013-3.el6.x86_64 3/5
Installing : mysql-5.1.73-3.el6_5.x86_64 4/5
Installing : mysql-server-5.1.73-3.el6_5.x86_64 5/5
Verifying : perl-DBD-MySQL-4.013-3.el6.x86_64 1/5
Verifying : mysql-libs-5.1.73-3.el6_5.x86_64 2/5
Verifying : mysql-server-5.1.73-3.el6_5.x86_64 3/5
Verifying : mysql-5.1.73-3.el6_5.x86_64 4/5
Verifying : perl-DBI-1.609-4.el6.x86_64 5/5
Installed:
mysql-server.x86_64 0:5.1.73-3.el6_5
Dependency Installed:
mysql.x86_64 0:5.1.73-3.el6_5 mysql-libs.x86_64 0:5.1.73-3.el6_5
perl-DBD-MySQL.x86_64 0:4.013-3.el6 perl-DBI.x86_64 0:1.609-4.el6
Complete!
ついでにmysqldを起動してみましょう。これもvzn exec 経由で行います。
~$ vzn exec kangaroo_gold service mysqld start
Initializing MySQL database: Installing MySQL system tables...
OK
Filling help tables...
OK
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h kangaroo_gold password 'new-password'
Alternatively you can run:
/usr/bin/mysql_secure_installation
which will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.
See the manual for more instructions.
You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &
You can test the MySQL daemon with mysql-test-run.pl
cd /usr/mysql-test ; perl mysql-test-run.pl
Please report any problems with the /usr/bin/mysqlbug script!
[ OK ]
Starting mysqld: [ OK ]
特に問題なく起動できました。あと、コンテナが起動したら一緒にmysqldが起きるように設定しましょう。
~$ vzn exec kangaroo_gold chkconfig mysqld on
これでコンテナが起動したときにmysqldが起き上がるようになりました。
コンテナの中に入り込んでみよう
これまで、コンテナでいくつかのコマンドを実行するのにvzn execコマンドを通してきました。
何故かというと、vzn execコマンドは「コンテナに変更を加える場合に使う」べきコマンドだからでして、実際どれもコンテナに変更を加えるものばかりを実行してきたわけです。
では、例えば「mysqldの起動状況を確認したい」といったような、「コンテナに変更を加えない」ことを行う場合にはどうすればいいのでしょうか。それは vzn enterコマンドを使って、直接コンテナの中に入り込んで確認すると良いのです。vzn enterの文法は以下の通りです。
vzn enter [コンテナIDまたはコンテナ名]
実際にmysqldの起動状況を見てみましょう。
~$ vzn enter kangaroo_gold
entered into CT 101
[root@kangaroo_gold /]# service mysqld status
mysqld (pid 865) is running...
起動してますね。なお、exitコマンドで、enterしたコンテナのシェルから抜けることができます。
※ (3)へ続く。