AWSに適用する前に仮想環境でテストしたいと思ってこの構成にしました
Windowsで仮想環境を作りたいと先週Vagrantを使ってみましたが立ち上げ遅すぎワロタ~となってしまったので苦肉の策でVirtualBox上にVagrantでCentOS6.7を用意してその中にdocker-engineをインストールして爆速立ち上げ環境を作ってしまおうという意図の下、勤務中に書き上げたエントリーです。仕事は楽しい
#前提
立ち上げるVMはCentOS6.7でVagrantboxはこちらを使っています
https://github.com/CommanderK5/packer-centos-template/releases/download/0.6.7/vagrant-centos-6.7.box
ただvagrant up
した後にyum update
を行うのでそれをvagrant package
したものをベースとし、そのboxで生成したVM上にdocker-engineをインストールするのでそれもpackageしてそれを今回動作させるVMとして使用します
boxの派生イメージ的には
centos6-7
: ダウンロードした状態のCentOS
centos6-7-yum-update
: CentOSにyum updateしただけ
centos6-7-docker-engine
: docker-engineインストールした状態
となります
こまめに分割しているのはCentOS6.7ベースで他の事したい時にいちいちupdateすると時間の無駄になるからですね
今回はMySQLとPHPとHAProxyを使用したいのですがそれらはdockerコンテナとして起動します
#yum update状態のbox作成
vagrant up
で何もしていないCentOSを立ち上げてください
※vagrant init ~~
とvagrantfile編集は割愛します、全く分からない場合ここを見てvagrant up
がキメられるようにしてください
おもむろに
sudo yum update
をかまします
[vagrant@localhost ~]$ sudo yum update
~~色々~~
perl-version.x86_64 3:0.77-141.el6_7.1 postfix.x86_64 2:2.6.6-6.el6_7.1
procps.x86_64 0:3.2.8-35.el6_7 puppet-agent.x86_64 0:1.3.2-1.el6
selinux-policy.noarch 0:3.7.19-279.el6_7.8 selinux-policy-targeted.noarch 0:3.7.19-279.el6_7.8
udev.x86_64 0:147-2.63.el6_7.1
Complete!
完了しました
この時点でboxcentos6-7-yum-update
を作成したいと思います
boxを作成するコマンドは
vagrant package --output 作成するbox名
です
vagrant package
だけでもいいらしいですがbox名を指定したいのでオプションを付けています。
###現在のbox一覧
centos6-7というboxだけが存在しています
j5hhht1@J5HHHT1-PC /d/various/vagrant/centos6-7
$ vagrant box list
centos6-7 (virtualbox, 0)
###package実行
※packageを実行する時自動的にvagrant halt
が実行されます、先にhaltしててもしなくてもどっちでもいいです
vagrant package --output centos6-7-yum-update
実行が完了するとカレントディレクトリにcentos6-7-yum-update
というboxファイルが生成されます
j5hhht1@J5HHHT1-PC /d/various/vagrant/centos6-7
$ vagrant package --output centos6-7-yum-update
==> default: Attempting graceful shutdown of VM...
==> default: Clearing any previously set forwarded ports...
==> default: Exporting VM...
==> default: Compressing package to: d:/various/vagrant/centos6-7/centos6-7-yum-
update
j5hhht1@J5HHHT1-PC /d/various/vagrant/centos6-7
$ ls
Vagrantfile centos6-7-yum-update
###boxの登録
先ほどpackageで生成したboxファイルを登録します
vagrant box add box名 boxファイルPATH
実行コマンド
vagrant box add centos6-7-yum-update ./centos6-7-yum-update
j5hhht1@J5HHHT1-PC /d/various/vagrant/centos6-7
$ vagrant box add centos6-7-yum-update ./centos6-7-yum-update
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'centos6-7-yum-update' (v0) for provider:
box: Unpacking necessary files from: file://d:/various/vagrant/centos6-7/cen
tos6-7-yum-update
box: Progress: 100% (Rate: 33.1M/s, Estimated time remaining: --:--:--)
==> box: Successfully added box 'centos6-7-yum-update' (v0) for 'virtualbox'!
j5hhht1@J5HHHT1-PC /d/various/vagrant/centos6-7
###登録されたか確認
j5hhht1@J5HHHT1-PC /d/various/vagrant/centos6-7
$ vagrant box list
centos6-7 (virtualbox, 0)
centos6-7-yum-update (virtualbox, 0)
新しくcentos6-7-yum-update
というboxが登録されていますね
centos6-7-yum-update
boxからCentOS起動まで
手順は
1.centos-6-7-yum-updateディレクトリを作成
2.vagrant init
をキメる
3.vagrantfile編集
4.vagrant up
で起動
1.ディレクトリ作成
※同じディレクトリ構成ではないと思うので各自の環境に合わせて変更してください
僕の場合カレントディレクトリは
/d/various/vagrant/centos6-7
mkdir ../centos6-7-yum-update
作ったディレクトリに移動
cd ../centos6-7-yum-update
2.vagrant init
centos6-7-yum-update用のvagrantfileを作成します
vagrant init centos6-7-yum-update
3.Vagrantfile編集
今回GUIモードは指定しません
// Windowsから見ることの出来るIPを指定
config.vm.network "private_network", ip: "192.168.33.11"
4.vagrant upで起動
vagrant up
sudo yum update
で特に更新されなければ大丈夫です
これでcentos6-7-yum-update
boxは作成完了
1つのbox作るだけでも長い……………………………………
##packageから作ったboxのVMにssh接続出来ない場合
vagrant ssh
でログインして
sudo ln -s -f /dev/null /etc/udev/rules.d/70-persistent-net.rules
ssh切って
vagrant reload
ssh vagrant@192.168.33.10
でも入れるようになりました
参考
macで作られたvagrant boxをもらったときに出るネットワークエラーの対処法
#docker-engineインストール状態のbox作成
手順はcentos6-7-yum-update
boxと大して変わりません、docker-engineインストールするくらいです
なのでdocker-engineのインストールだけ書きます
手順
1.centos6-7-yum-update
にdocker-engineインストール
2.vagrant package --output centos6-7-docker-engine
でbox作成
3.vagrant box add centos6-7-docker-engine ./centos6-7-docker-engine
でbox登録
4.vagrant init centos6-7-docker-engine
でvagrantfile生成
5.vagrantfile編集
6.vagrant upで実行
##docke-engineインストール
curl -sSL https://get.docker.com/ | sh
これ一発です笑
Installation on CentOS
dockerデーモン起動
sudo service docker start
[vagrant@localhost ~]$ sudo service docker start
Starting docker: [ OK ]
イメージ確認等のコマンド
[vagrant@localhost ~]$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED
VIRTUAL SIZE
[vagrant@localhost ~]$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED
STATUS PORTS NAMES
何もpullしていないのでimageは表示されませんが動くのは確認出来ました
#一旦終了
ひとまずdockerの入ったbox作成までを行い、vagrant up
したらdockerが使える状態になっていれば問題ありません
いくつもVagrantfileを作ってディレクトリごとにvagrant up
するのがvagrantの基本で良いのか疑っていますがdockerが動く状態にはなったのでここでひとまず
以上です