意義

最速で Linux オペレーティングシステムをインストール・展開できる。インストールは高速かつ簡単で、ほとんど時間をかけずに Docker を稼働させられる。動作速度も非常に速い。メモリディスクを使用する。

私の状況

win8 のノートPCでたまにゲームをするが、Linux のデュアルブート環境を構築するには1日かかるかもしれない。私の業務はすべて Docker で動かせば十分だ。さらにノートPCのメモリは16gと十分大きい(HUST 姜先生に感謝)。

CoreOS 在 PC 上快速安装上手

準備

  1. CoreOS image ダウンロード先
  2. EasyBCD ダウンロード先

作業開始

  1. EasyBCD をインストールして ISO ブート項目を追加し、CoreOS の livecd イメージを直接使用する。
    詳細な手順(スクリーンショット付き):http://jingyan.baidu.com/article/466506586ed309f549e5f81c.html
  2. CoreOS を起動して CoreOS のインストールを完了する

更新

起動用の ISO ファイルを更新するだけでよい。

欠点

  1. 永続化できない(これによる利点:壊してしまっても、直接再起動するだけでよい)
  2. OS全体がハードディスク上に生成されたファイルとして直接ハードディスク領域を占有する(これによる利点:ハードディスクの速度が非常に向上する)
  3. 毎回起動時に手動でハードディスク領域をマウントし、システム全体の初期化スクリプトを手動で実行する。

長所と短所を踏まえると、この構成は明確な業務がある作業には十分使える。業務が多い場合は、最適化すべき点が多くなるかもしれない。

設定

  1. ハードディスク上に100gの領域を作成し、フォーマットします。参考コマンド:mkfs.ext4 /dev/sda2 、その後マウントします。パーティション分割、フォーマット、マウントの方法がわからない場合は、ここを参照。この記事は、初級レベルのディスク管理について私が見た中で最高の記事だと言えます。
  2. マウント後、/var/lib/docker/ フォルダをマウント先にコピーし、元の場所にシンボリックリンクを張り直します。(これで docker images をハードディスク上に永続化でき、再起動しても失われません)。参考操作は以下のとおりです:
    cp -rf /var/lib/docker /mnt/
    rm -rf /var/lib/docker
    ln -s /mnt/docker /var/lib/docker
    

私の初期化ファイルの参考

mkdir /root/.ssh
echo "ssh-rsa xxx..(省略)....xx Li-jianying@lijianyings-MacBook-Pro.local" > /root/.ssh/authorized_keys

rm -rf /var/lib/docker
ln -s /mnt/docker /var/lib/docker
#echo 'DOCKER_OPTS="--registry-mirror=http://XXXXX.m.daocloud.io"' >> /run/flannel_docker_opts.env
#systemctl daemon-reload
systemctl restart docker
# using disk

まず rsakey をインポートし、その後 docker の場所にシンボリックリンクを張ります。

daocloud アクセラレーションを追加(公式には CoreOS でのアクセラレーション方法は書かれていないが、達人が方法を公開している)。私はアクセラレーションなしの方が速いので、ここではコメントアウトしておく。予備案として。

systemd で遭遇した落とし穴

Docker 内でエラー -1 が返されると、コンテナは落ちてしまいます。しかし systemd 内にはまだ scope が存在します。

問題のあるコンテナを起動すると、プロンプトが表示されます。

Error response from daemon: Cannot start container test: [8] System error: Unit docker-e10eb86807cd9971fc03a8eee732771193d506ed2ba678fdf4292916a9fb072c.scope already exists.

そうすれば

systemctl stop docker-e10eb86807cd9971fc03a8eee732771193d506ed2ba678fdf4292916a9fb072c.scope

解決できます。

CoreOS.iso で遭遇した落とし穴 2

KnowHosts の確認を何度も求められる。

参考解決方法https://github.com/lijianying10/FixLinux/blob/master/note/取消sshPublicKeyKnowHost认证.md

まとめ

この方法で PC に Linux をデプロイするのは本当に便利です。Docker に精通していれば、この考え方で自分の状況に応じて20分で完了できるかもしれません。
私はこの考え方を見つけた後、さまざまな比較検討を行いました。

  1. ブート問題をすばやく解決するため、EasyBCD での ISO 直接起動に切り替え、UEFI Grub をいじる問題は避けました。
  2. 環境設定にかかる時間コストを減らすため、ハードディスクに通常インストールするディストリビューションをやめて CoreOS にしました。
  3. 誤操作やバージョンアップがシステムにもたらす不安定要素を避けるため、Docker にしました。
  4. 将来的には RKT、RunC に変えるかもしれません(達人たちが早く問題を解決してくれることを願います。RunC は今月リリースと言っていますが、延期されるかどうかはわかりません)
  5. 注意:この方法は、あらゆる犠牲を払って最もシンプルな環境設定と開発時間を交換するものです。完璧主義でいじくり回すのが好きな人は、おそらく避けたほうがよいでしょう。

出典:http://www.philo.top/2015/07/16/pc-docker/