はじめに
コンテナ専用OSのなかでもRancherOSはisoサイズが極端に小さいため始めるのも肩がこらず楽ちんです。
ディストリビューション | amd64 iso size |
---|---|
CoreOS Container Linux 2135.6.0. | 423MB |
CentOS Atomic Host 2019-Jul-2 | 1.1GB |
Fedora Atomic Host 20190820 | 1GB |
Rancher OS 1.5.3 | 127MB |
※ Ubuntu Coreはisoがないが、amd64用イメージは340MB |
コンテナオーケストレーション環境Rancherの影響から、Kubernetesと組み合わせての利用が多い様子ですが、単にdockerだけで使うにも便利です。各種のディストリビューションコマンドセットを切り替えて使えるので、RedHat派/Debian派/Ubuntu派 問わず使える点も魅力。
今回は、潔くKubernetesは捨てて、portainerをGUIとしたdocker-composeを使ったコンテナスタック入門環境を構築する手順を紹介します。慣れれば5分で終わります。
環境
- Rancher OS v1.5.3
- portainer 1.22.0
記事を書くにあたり、VirtualBox 6.0上に環境を用意して作業していますが、別の環境でも特に変わりありません。
手順概略
- Rancher OS インストール & 設定
- portainer 導入、起動、httpでアクセス
Rancher OS に docker-compose
コマンドはないのですが、導入は不要です。これは、portainerが内部にlibcomposeを持っており自力でcomposeを実行できるからのようです。Rancher OSにdocker-composeをインストールしてもコンソールを切り替えると消えてしまい、これの対策は逆に面倒なので、Rancher OS上でdocker-composeを直接扱うよりも便利な点。
1. Rancher OS インストール & 設定
iso から Rancher OSを起動
https://github.com/rancher/os/releases/tag/v1.5.3 からrancheros.isoをダウンロード。CDに焼くなりブートUSBを作るなりして、起動。
起動するとログイン状態になるので、SSHの準備として一時ログイン用パスワードを設定する。このとき設定するパスワードは使い捨てるため、深く考えなくてもよい。
[rancher@rancher ~]$ sudo passwd rancher
# 適当なパスワードを設定
ここで設定したアドレスを使って、SSHログイン。ユーザ名は rancher
> ssh -l rancher -p 22 <host_address>
インストール設定を流し込む
sshターミナル上で、
[rancher@rancher ~]$ vi cloud-config.yml
hostname: ros001
# ファイルがないと怒られるので何か書いておく
# 必要であればほかの設定も追加
ここでは、ネットワークアドレスはDHCP設定を前提にしている。ここでネットワーク設定を済ませる場合は、公式リファレンス を参照のこと。
cloud-config.yml
の文法チェックをしておく。エラーが出たら修正しておくこと。
[rancher@rancher ~]$ sudo ros config validate -i cloud-config.yml
# 何も表示されなかったら文法チェックOK
ディスクにインストール
先にインストール先のディスクを確認しておく。
[rancher@rancher ~]$ sudo fdisk -l
Disk /dev/sda: 8 GiB, 8589934592 bytes, 16777216 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
例えばこんな風に出たら、インストール先は /dev/sda
なので、次のコマンドを打ってディスクへインストールする。
[rancher@rancher ~]$ sudo ros install -c cloud-config.yml -d /dev/sda --append="rancher.password=<localpassword>"
--append="rancher.password=password"
の部分は、パスワードログインのために必須。ここで設定するパスワードは、ディスクにインストールされたシステムのログインパスワードとなるため、慎重に決めること。うまくいけば再起動がかかる。ブートディスクをアンマウントして、ディスクにインストールされたRancher OSを起動する。
インストール後の設定
インストール後、SSHでログインする際に、
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
などと出てくることがある。インストール時にSSHログインした際のfingerprintが残っていることが原因なので、SSHクライアント側PCの~/.ssh/known_hosts
を開いて、当該項目を消せば治る。
設定すべき項目は特にないが、ネットワーク回り等で追加設定がある場合はここで済ませておく。また、セキュリティの問題がある環境の場合はSSHログインを鍵認証にしておく。設定の方法は2種類あって、
-
sudo ros config set ...
: 設定コマンドを使う
# 設定例
[rancher@ros001 ~]$ sudo ros config set rancher.network.interfaces.eth0.dhcp false
-
vi /var/lib/rancher/conf/cloud-config.yml
: ファイルの直接編集
rancher:
network:
interfaces:
eth0:
dhcp: false
は同じ意味になる。ymlを直接編集する場合は、文法チェックを必ず行う。
[rancher@ros001 ~]$ sudo ros config validate -i /var/lib/rancher/conf/cloud-config.yml
いずれの場合も、設定変更後は再起動が必要。
なお、
- 設定を確認するには
$ sudo ros config export
コマンドを使う - 項目を削除するためのコマンドはないので、削除が必要なら
/var/lib/rancher/conf/cloud-config.yml
を直接編集
詳しくは リファレンスマニュアル 参照
portainer.io の実行
$ docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
http://<ホストアドレス>:9000
にアクセス
今回はローカルのdockerを管理したいので、Localを選ぶ
Nameを入力する際に、現在、英子文字以外のあらゆる記号、大文字を使うとstackの管理が狂う不具合があるため、a-zのみで入力する。(参照)
下のエディタにdocker-compose.ymlの中身を入力するか、docker-compose.ymlをアップロードする。下の方のDeploy the stack
ボタンを押せば、ネットワーク設定が正しければ問題なくデプロイできるはず。
ここまで慎重に進めても15分程度。あとはほとんどの設定がportainer上で可能です。
Tips
Rancher OSの console
設定について
https://rancher.com/docs/os/v1.x/en/installation/configuration/switching-consoles/ に詳しい。
$ sudo ros console list
で出てきたものなら、 何を選んでもよい。default
コンソールはコマンドが少ないので、別のものを選ぶとよい。コンソールを切り替えると /home
/opt
/var/lib/docker
/var/lib/rancher
以外のデータはすべて消えてしまうので注意。
参考文献
- Rancher OS インストール関連
- portainer.io インストール関連