CoreOSをインストールし、Docker-Composeを動かすまでの手順をご紹介します。CoreOSを動かしてみた方法をご紹介します。VPS」を使用しました。CoreOSのインストールに必要となるSSH公開鍵を準備します。お手元のPC/Macにて下記コマンドを実行して作成します(下記の例はMacでの実行結果です)。:ホームディレクトリの.ssh/にSSH秘密鍵(id_rsa)およびSSH公開鍵(id_rsa.pub)ができあがりますので保管します。ファイル名は変更しても構いません。Linuxの場合、秘密鍵のパーミッションを「600」に変更します。これを忘れるとSSHログインできませんので注意しましょう。CoreOSのインストール時にあったほうが良い「core」ユーザのパスワードをハッシュ化したものを作成します。こちらもお手元のPC/Macにて下記コマンドを実行して作成します。「password」をハッシュ化したもの。CoreOSのインストールには上記SSH公開鍵が必須ですが、これだけではコンソールからのログインができません(リモートログインのみ)。コンソールログインを有効にするためにはハッシュ化したパスワードを準備する必要があります。CoreOSのインストールには「Ignitionファイル」と呼ばれるインストール情報を記述した設定ファイルが必要になります。IgnitionファイルはJSON形式で記述されたものなのですが、人間が記述するには少々大変なので、一旦記述しやすい形式(YAML形式)でIgnitionファイルを作成し、それをJSON形式に変換する方法をとることにします。その際に必要となる変換ツールが「fcct」です。fcctは下記サイトからダウンロードします。https://github.com/coreos/butane/releasesmacOS用(〜darwin)、Linux用(〜linux-gnu)があるので利用環境に応じてダウンロードします。Windows用は無いようなのでWindowsユーザは別途MacかLinux環境を用意する必要があります。「butane-〜」という名前なので「fcct」にリネームしますfcctファイルのパーミッションに「x」(実行権限)を追加します。fcctIgnitionファイルはこの後作成します。CoreOSでは、インストール時にIgnitionファイルを外部のWebサーバから取得する仕組みになっています。よって、Ignitionファイルを設置するための、インストールするサーバ以外のWebサーバを用意する必要があります。Webサーバの種別には特に制約はなく、SSL(https)で暗号化されている必要もありません。ファイルをアップロードできるWebサーバをお持ちであればそちらを使用できます。適当なWebサーバがない場合は、無料のWebサーバなどを利用しても良いでしょう。今回は無料で使えるWebサーバ「xfree」サーバの「HTMLサーバ機能」を利用しました。サイトにて「お申し込みはこちら」から申込み、アカウントを作成します。VPSにログインします。[イメージ]-[ISOイメージ]を選択します。[ISOの登録]ボタンをクリックします。ISOイメージを登録します。「ISOイメージ名」は初期表示のままでOK。Metal」のISOのダウンロードを右クリックし、リンク先のアドレスをコピーします。「取得先URL」にコピーしたURLを貼り付けます。[ISOの登録]ボタンをクリックします。ISOが登録され一覧に表示されるので、[インスタンス作成]ボタンをクリックします。スペック選択の画面になるので希望するスペック(CPU/メモリ/ストレージ)を選択します。「コンソールログインパスワード」、「インスタンス名」を入力し、[インスタンス作成]ボタンをクリックします。インスタンスが正常に作成されるとインスタンス一覧に表示されます。インスタンス名をクリックします。インスタンスの詳細情報が表示されるので、IPアドレス、ゲートウェイ、サブネット、DNSの値を控えておきます(Ignitionファイル作成時に使用します)。作成したインスタンスに「セキュリティグループ」を設定します。インスタンス詳細情報を表示しているページの上部メニューより[セキュリティ]-[セキュリティグループ]を選択します。[セキュリティグループ追加]ボタンをクリックします。許可するネットワークパケットを設定します。Webサーバとして構築するのであれば、TCP80番(http)、443番(https)、および管理用に22番(ssh)を設定します。TCP80番とTCP443番は全ての接続元から受付るので[IP]欄は「*」を設定します。TCP22番は限られた場所からのみ接続を許可したいので[IP]欄に許可するIPアドレスを設定します。[登録]ボタンをクリックします。セキュリティグループ一覧に追加されます。インスタンス詳細ページに戻り、「セキュリティグループ」のプルダウンを開いて、先ほど登録したセキュリティグループを選択します。各種情報の収集Ignitionファイルを作成する際に必要となる、作成したインスタンスの各種情報を収集していきます。ここからはインスタンスにコンソールからアクセスして操作していきます。コンソールに入るインスタンス詳細ページにある「コンソール」タブをクリックし、[コンソールを起動]ボタンをクリックします。※ブラウザのポップアップが無効になっているとコンソールウィンドウが開かないので注意(ポップアップを有効にしてやる)コンソールが表示されます。CoreOSはインスタンスにインストールされていません。この段階ではユーザ/パスワードを指定しなくともログインした状態となります。以降、コンソールからコマンドを入力していきます。CoreOSをインストールする際に利用するIgnitionファイル作成に必要な情報を収集します。必要なネットワーク情報は次の通りです。ネットワークの「id」インターフェース名MACアドレスIPアドレス(インスタンス詳細ページで取得済み)サブネットマスク(インスタンス詳細ページで取得済み)ゲートウェイ(インスタンス詳細ページで取得済み)DNS(インスタンス詳細ページで取得済み)コンソールに次のコマンドを入力します。1」interface-nameは「ens3」であることがわかりました。:MACアドレスが「fa:16:a1:a1:a1:a1」(仮です)であることがわかりました。CoreOSのインストールコマンド実行時に、インストール先のディスク情報を指定する必要があるため、インスタンスのディスク情報を調査します。次のコマンドを実行し、ディスクデバイスを調べます。CoreOSのインストールに必要なIgnitionファイルは外部のWebサーバから受け取る方式なので、インスタンスがネットワークを使用できる状態になっている必要があります。VPSはDHCPで割り当てられたIPを取得できないようなので、割り当てられたIPアドレスを手動で設定します。※割り当てられたIPアドレス、サブネットマスク、ゲートウェイ、DNSはインスタンス詳細情報ページで確認できます。次のコマンドでインスタンスにIPアドレスを設定します。ここではIPアドレス:133.1.1.10サブネットマスク:255.255.254.0(23ビットマスク)ゲートウェイ:133.1.1.1DNS:210.134.55.219とします。次のコマンドを入力し、正しくIPアドレスが付与されていることを確認します。a任意の宛先にpingを発行し、応答が返って来ればOK。収集した情報をもとにIgnitionファイルの基となるYAML形式ファイルを作成します。インデントには意味がありますので注意してください。下記の形式で作成し、「fcos.yml」という名前で保存します(名前は何でも良い)。先に取得した「fcct」を使って、YAML形式で上で作成したIgnitionファイルを、実際にインストールで使用するJSON形式に変換します。PC/Macのターミナルを使用して次のコマンドを実行します。line%JSON形式のIgnitionファイルが「fcos.json」の名前で生成されます(名前は何でも良い)。外部のWebサーバにアップロード生成したJSON形式のIgnitionファイル(fcos.json)を、外部のWebサーバにアップロードします。今回は外部のWebサーバとして「xfree」サーバを利用しました。アップロードした先のURLも取得します。アップロード後、正常にアクセスできることをブラウザからURLを入力して確認します。CoreOSをインストールします。ここではインストール先ディスク:/dev/vdaIgnitionファイルの場所:http://user01.html.xdomain.jp/fcos.jsonとします。これが表示されればOK。リブートするリモートからログインPC/MacのターミナルよりSSHで接続してみます。「id_rsa」とします。Linuxの場合、秘密鍵ファイルのパーミッションを「600」に変更しておくのを忘れずに。CoreOSのインストールは終了しました。CoreOSでDockerを運用するにあたっての基本的な設定をしていきます。CoreOS(以降「CoreOS」と記します)のインストール直後はタイムゾーンが「UTC」になっています。このままだとログファイル等の日時がUTCで表示されてしまうので「JST」に変更します。:ホスト名変更localhostになっているホスト名を任意の名前に変更します(例では「hoge」に変更しています)。unzipをインストールします。unzip後々SELinuxのコマンド「semanage」を使いたい場合、次のようにインストールします(必須ではありません)。policycoreutils-python-utilsインストール終了後、再起動を要求されるので再起動します。rebootパスワードなしのsudoをやめる(任意)CoreOSインストール直後はcoreユーザのみ作成されておりsudoコマンドの実行が許可されています。coreユーザにパスワードが設定されていないのでパスワードなしでsudoコマンドが実行可能となっています。これを、sudo実行時にパスワードを要求するように変更します。coreユーザにパスワードを設定します。※強固なパスワードを設定するのであれば、単に「passwd」でも可。successfully.「/etc/sudoers.d/coreos-sudo-group」ファイルの内容を変更します。/etc/sudoers.d/coreos-sudo-group行をコメントアウトします。先頭に#をつけてコメントアウト再起動し、coreユーザでsudoコマンドを実行した時にパスワードを要求することを確認します。docker-composeを動かすdocker-composeのインストールCoreOSインストール直後はdockerコマンド、podmanコマンドは使用できますが、docker-composeは入っていませんのでインストールします。docker-compose一旦再起動します。reboot確認します。CoreOSではdocker.serviceを明示的に起動させる必要はありません。Docker用ユーザの作成CoreOSインストール直後はcoreユーザからdockerコマンドを実行できません(coreユーザはdockerグループに属していません)。deniedcoreユーザをdockerグループに入れるか、sudoでdockerコマンドを実行することもできますが、ここではセキュリティ面を考慮してDockerを使うための専用をユーザを作成することにします。groups=10000(dockerrun),978(docker)Dockerファイル類の配置docker-compose.yml、DockerfileなどDockerを動作させるために必要なファイル類を作成し配置します。CoreOSではSELinuxが有効になっていますので、どこのディレクトリにdocker関連ファイルを置いても動作するわけではありません。「container_var_lib_t」などDockerの動作を許可するコンテキストが付加されたディレクトリにdocker関連ファイルを配置するか、Docker関連ファイルを保存するディレクトリにDockerの動作を許可するコンテキストを追加する必要があります。ここでは「/var/lib/containers」ディレクトリ以下にDocker関連ファイルを置くことにします。内容は割愛docker-composeを実行します。以上でDocker-Composeを動かすことができるようになりました。次のような懸案・課題が残っています。)これらを解決していかないと本番環境でDockerを運用するのは厳しいでしょう。これらの解決に向けての対策は別の機会に行っていきます。OSで構築してみました。Reserved.ツイート。