Translate

2015年3月26日木曜日

CoreOSをVirtualBox上の仮想マシンへVagrantなしでインストールする

Docker ホストを構築する場合は
ホスト自体は最も軽い状態にしておきたい..

結局本格的に使用する場合は
現時点では CoreOS をつかうしかないのかな..?

そうなるといろいろ変なことして他の人に迷惑をかけない
VirtualBox上の仮想マシンでたてられるようにしておきたい。

ということでイチからやってみることにした。

将来的に物理マシンへインストールする練習にするためにVagrantを使わない方法でやってみました。

なお、以下の手順で作成したDockerホストはあくまで試行や学習用なのでローカルPC外部にサービス提供できません。

--------

前提


  • ターミナル接続ソフト(Poderosa, Tera Termなど)が導入済み
  • VirtualBoxが導入済み
  • 1GBメモリの仮想マシンが作成可能であること


CoreOSのダウンロード


  • ブラウザでhttps://coreos.com/を開く
  • Download CoreOS>ISO Image
  • Stable Channel>Download Stable ISO (Beta,Alphaの選択は後で変えられる)
  • ファイルを保存する
  • OKボタン
  • ※参考:私が試した際には約144MB


VirtualBox 上に仮想マシンを作成


  • VirtualBoxを起動
  • 新規(N)アイコン
  • 名前(N):適当な名前をつける
  • タイプ(T):「Linux
  • バージョン(V):「Other Linux (64-bit)
  • 次へ(N)ボタン
  • 必要なメモリサイズ:1GB

※注意:256MB512MBだと動作しません

  • 次へ(N)ボタン
  • 仮想ハードドライブを作成する(C)
  • 作成ボタン
  • VDI(VirtualBox Disk Image)
  • 次へ(N)ボタン
  • 可変サイズ(D)
  • 次へ(N)ボタン
  • 作成ボタン
  • 作成した仮想マシンを選択した状態で設定(S)アイコンを選択
  • ストレージ
  • コントローラ:IDE>空(DVDアイコン)を選択
  • 属性のCD/DVDドライブ(D)欄の右端のDVDアイコンを押す
  • 仮想DVD/CDディスクのファイルの選択...
  • ダウンロードしたCoreOS ISOイメージを選択
  • 開く(O)ボタン
  • ネットワーク
  • アダプター2タブ
  • ネットワークアダプタを有効化
  • ホストオンリーアダプター
※NIC1枚目がサービスLAN(ゲストコンテナを使う人用)、
 NIC2枚目が運用LAN(システムを管理する裏方用)想定です。
※キーバインドがUSになっていて使いづらいので
 SSHでターミナル接続して作業するため後で固定IPを割り付けています。

  • OKボタン
  • 作成した仮想マシンを選択した状態で起動(T)アイコンを選択
  • コンソールがあがるまで待機


CoreOS Live実行

  • core@localhost ~ $」が出るまで待機

注意: LiveCD/DVDを動かした状態であり、
この段階ではまだ仮想HDDへインストールされていません。
キーボードレイアウトがUSで固定され変えられません。
→このため手順ではターミナル接続ソフト上でなるべく編集作業しています。

  • ifconfig -a
  • ホストオンリー側のNIC(enp0s8)のIPアドレスとネットマスクをメモ
  • sudo passwd core
  • hogehoge coreのパスワード
  • hogehogecoreのパスワード(再度)

※注意:上記のような緩いパスワードだともう一度聞いてきます

  • sudo systemctl start sshd

※この段階でターミナル接続ソフトからログインできるようになります


CoreOSインストール


  • ターミナル接続ソフトウェアを起動
  • メモしたIPアドレス、ユーザを「core」、パスワードを「core」にしてSSH接続
  • sudo -s

※プロクシ環境下の場合以下の環境変数をセットします
 export http_proxy=http://<プロクシサーバFQDN>:<プロクシサーバポート>/
 export https_proxy=http://<プロクシサーバFQDN>:<プロクシサーバポート>/

※インストール後ログインするユーザを「core1」、
 パスワードを「fugafuga」、パスフレーズを「hogehoge」として手順を記述します。

  • openssl passwd -1 ("エル"ではなく"いち")
  • fugafuga ←corecoreのパスワード
  • fugafuga ←corecoreのパスワード
  • 出力した文字列をコピーしておく(passwdに使用)
  • ssh-keygen -t rsa
  • (Enter)
  • hogehoge ←パスフレーズ
  • hogehoge ←パスフレーズ
  • cat /root/.ssh/id_rsa.pub
  • 出力した文字列をコピーしておく(ssh-authorized-keysに使用)

 ※/root/.ssh/id_rsa.pubは再起動すると消えます

  • vi config.yml
  • 以下のリストを入力し保存する

#cloud-config

hostname: coreos1
coreos:
 units:
  - name: 10-static.network
    runtime: no
    content: |
      [Match]
      Name=enp0s8

      [Network]
      Address=192.168.XX.XXX/XX ←ホストオンリー側のIP
users:
 - name: core1
   passwd: $1$s... ..x1 ←opensslコマンドの文字列
   groups:
    - sudo
    - docker
   ssh-authorized-keys:
    - ssh-rsa AAA... ..71 root@localhost ←ssh-keygenコマンドの文字列

 ※注意:このファイル内でtabは使用できません
 ※注意:先頭の空白有無でもエラーになることがあります

  • coreos-install -d /dev/sda -C stable -c stable -c config.yml

 stablebetaもしくはalphaに変更可能
  実行するとたとえ自分自身がstableであっても再度ダウンロードするので
  時間がかかります。

  • Success! CoreOS stable XXX.X.X is installed on /dev/sda」と表示されるまで待機
  • shutdown -h now
  • Oracle VM VirtualBoxマネージャー画面の該当仮想マシンを選択した状態で設定(S)アイコンを選択
  • ストレージ
  • コントローラー:IDE>coreos_production_iso_image.isoを選択
  • 属性のCD/DVDドライブ(D):の右端のDVD/CDアイコンを選択
  • 仮想ドライブからディスクを除去
  • OKボタン

 ※注意:刺したままだと再度Live環境があがります


CoreOS起動


  • Oracle VM VirtualBoxマネージャー画面の該当仮想マシンを選択した状態で起動(T)アイコンを選択
  • ログインプロンプトが出るまで待機
  • core1
  • fugafuga core1のパスワード
  • sudo systemctl start sshd
  • vi /usr/share/oem/run
  • 以下の3行を記述し保存する

 #!/bin/bash
 systemctl set-environment HTTP_PROXY=http://<プロクシサーバFQDN>:<プロクシサーバポート>/
 systemctl set-environment HTTPS_PROXY=http://<プロクシサーバFQDN>:<プロクシサーバポート>/
 systemctl start sshd

※systemctl enable sshdが効かないためここに記述しています。
 プロクシ不要の環境は中2行削除してください。
  • sudo chmod a+x /usr/share/oem/run
  • reboot
  • ログインプロンプトが出るまで待機
  • ターミナル接続ソフトウェアを起動し、IPアドレス、ユーザ「core1」、パスワード「fugafuga」を指定してログイン
  • docker search centos
  • 以下の様にDocker Hub上の公式イメージなどが参照できていればOK


core1@coreos1 ~ $ docker search centos
NAME                                 DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
centos                               The official build of CentOS.                   890       [OK]
...

akroh/centos                         Centos 6 container that has been updated w...   0                    [OK]

------

インストールして気づいたが..
クラスタ型のDockerベアメタル環境を選択する場合、CoreOSは選択肢にならない。

CoreOSDockerは決別したらしいが、どうもその原因が投資で得たたくさんの資金で組み込んだ機能、クラスタリングやらDocker Machineやらが気に入らなかったらしい。

CoreOS公式サイトのインストール手順でも「Docker will not work out of the box(Dockerはボックス(仮想マシンor物理マシン)の外では動作しない)」という制限を最初に説明している。

このため、クラスタを将来的にやろうという人はCoreOSを選ばなくなるんじゃ..

でもDocker Machineもユーザガイド該当章先頭に「Note: Machine is currently in beta, so things are likely to change. We don't recommend you use it in production yet.(注意:Docker Machineは現在ベータ公開です、このため変更されることがあります。本番環境で使用しないことをおすすめします。)」ってかいてあるし..

通常のCentOS、Ubuntuや、Server版、LTS版でも、最小構成であったとしてもインストレーション時にそれなりのサイズのISOイメージを落とさにゃならんし..

RedHat のProject AtomicでだしてるCentOS AtomicHost版か、Sunappy Ubuntu Coreか、はたまたMesos?!

Docker Machineがさっさと使える状態になればこのへんも淘汰されるのか?!

..みんな、どれ使おうとしてるんだろ..

0 件のコメント:

既存アプリケーションをK8s上でコンテナ化して動かす場合の設計注意事項メモ

既存アプリをK8sなどのコンテナにして動かすには、どこを注意すればいいか..ちょっと調べたときの注意事項をメモにした。   1. The Twelve Factors (日本語訳からの転記) コードベース   バージョン管理されている1つのコードベースと複数のデプロイ 依存関係 ...