Docker を動かすための軽量 Linux、 Photon を試してみました
はじめに
手前の mac 環境を汚さずにいろいろできる喜びもひとしおな docker for mac ですが、会社の検証環境とかでも使いたいなと思い始めて、特化した Linux を探し始めました。なんとなく検索で引っかかった photon なる OS powered by VMware を使ってみました。
Vine Linux や Elementary OS でも良かったのですが、ちょっと目的がデスクトップ寄りかなと思います。
イメージの入手
Photon OS by vmware
今回は手前の ESXi 環境(5.5)により Photon OS, Version 1.0 — OVA with virtual hardware v10 - A pre-installed and vSphere-optimized Photon OS minimal instance configured with virtual hardware version 10.を選択しました。
300MB 以下で小さい点ですでに好印象。 <<< あとで気付きますが、Alpine とか BusyBox とか上には上がいたようです・・・検索力↓
お前のDockerイメージはまだ重い💢💢💢
ラズパイ等でも使われているようです。
インストール
ESXi 5.5.0
ゲストOS:その他の 3.x Linux (64 ビット
CPU:1 vCPU (あとでちゃんと見ると2 vCPU 推奨とのこと。)
MEM:8192 MB
としました。
VMware Photon Linux の Install ~ Docker コンテナ起動。
http://techblog.clara.jp/2015/04/vmware-photon_how_to_install/
とりあえず初期設定
vSphere Client でコンソールからログインします。
username/password = root/changeme ですが、初回に変更を求められます。
次に、ssh するために useradd / passwd しました。
起動したときから DHCP でネットワーク周りの設定はもらえているようでしたのでそこは今回触れませんでした。
余談ですが、他の軽量 Linux だとデフォルトで DHCP じゃないものがあったので、ラボでさっと試すには便利です。
とりあえず yum update…と思ったら yum がない
Photon は TDNF というパッケージ管理システムに置き換わっています。
じゃあこれが何なのかというと、Tiny な DNF です。
DNF とは Dandified Yum のことらしいです。Python 2 ベースでかかれ、依存関係解決がときどき失敗してしまうという Yum の抱える諸問題を解決されるために生まれた事実上の後継とのこと。詳しくはWikipediaへどうぞ。
Tiny DNF は、Github を見ると vmware さんが作られてるみたいです。Photon 用ですかね。
README を読むと、repo の追加もできるようです。
Now configure repo files under /etc/yum.repos.d or your repodir following
.repo format of dnf/yum.
yumでは /etc/yum.conf の[main]セクションにproxy=http://(hostname):(port)/と、あと必要ならproxy_username=(username)とproxy_password=(password)を追加するとプロキシを通すことができた。
DNFでは同じ内容を /etc/yum.conf ではなく /etc/dnf/dnf.conf の[main]セクションに書く。
Photonでは vi /etc/tdnf/tdnf.conf
というファイルがありそこに追記しました。
その後 tdnf update -y
が成功しました。
yumからDNFへの移行
本家サイト
Docker Hub OFFICIAL の VMware Photon リポジトリが公開されました。
とりあえず Docker 起動
ssh 用ユーザでログインしたあと、su
して root 権限になってから docker を触り始めました。
1 | # rpm -q docker |
systemctl start docker
再起動後も docker を最初から起動させる設定systemctl enable docker
1 | # docker version |
Proxy 設定
渡しの場合、Proxy の背後にある環境だったため、docker pull image が失敗しました。
Proxy環境下のDockerトラブルシューティング <<< こちらは役に立たなかった
Proxy 環境下での Docker の使用方法(Docker デーモンが systemd に管理されている場合) <<< 役に立ちました。
vi /lib/systemd/system/docker.service
1 | Environment='http_proxy=http://<ipaddr>:8080' |
systemctl daemon-reload
Proxy 別の手段
/lib/systemd/system/docker.service
のなかにEnvironmentFileの記述があります。
この配下に追加したい環境情報を置くこともできます。
vi /etc/systemd/system/docker.service.d/http-proxy.conf
1 | [Service] |
確認
systemctl show docker | grep Envi
Environment=HTTP_PROXY=http://
EnvironmentFile=/etc/default/docker (ignore_errors=yes)
Docker が起動しない!?
docker image pull
している途中で以下のエラーが出ました。
unauthorized: authentication required
http://qiita.com/youhei_nakagawa/items/d7bf1e83008e9ed0c68e
再起動したらなんか動いた。
Bridge がおかしいとこうなるらしいです。以下記録までにログ
1 | # systemctl status docker.service -l |
Elasticsearch 公式 Docker を使わないのか?
おっしゃる通りです。使ってみました。
ElasticのDockerイメージを使って、ElasticsearchとKibanaを使う
起動しました。
1 | curl -GET http://localhost:9200 |
さいごに
さくさく挙動してくれて、tdnf で従来通りいろいろ足せるので、普段使いには良さそうだなと思いました。
Alpine Linux も後日試してみます。