ホスト自体は最も軽い状態にしておきたい..
結局本格的に使用する場合は
現時点では 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
※注意:256MBや512MBだと動作しません
- 次へ(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のパスワード
- hogehoge ←coreのパスワード(再度)
※注意:上記のような緩いパスワードだともう一度聞いてきます
- 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
※stableをbetaもしくは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は選択肢にならない。
CoreOSとDockerは決別したらしいが、どうもその原因が投資で得たたくさんの資金で組み込んだ機能、クラスタリングやら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がさっさと使える状態になればこのへんも淘汰されるのか?!
..みんな、どれ使おうとしてるんだろ..