SQL Server on Linux がGAされたわけですが、Dockerで動かしたいとなった場合、Ubuntuベースのものしか公開されていなかったので、RHEL版のコンテナーを動かすためのDockerfileを作ってみました。
Microsoftが公開しているSQL Server on Linuxのdockerコンテナーはこれですが、Ubuntuベースのものとなっています。
https://hub.docker.com/r/microsoft/mssql-server-linux/
じゃあ元のDockerfileを見て他のディストリ版を作ろうと思っても./installというフォルダの中身が公開されておらず、お手上げ状態です。
無人インストールの手順は公開されているので、これを元にDockerfileを作ろうとも考えたのですが...
mssql-conf を実行するとわかるのですが、GAのタイミングでmssql-confがsudoコマンドを必須とするようになってしまいました*1。1,2箇所ならモンキーパッチでもあてようとおもったのですが、これスクリプトを検索すればわかるのですが、いたるところにsudoコマンドでの実行がハードコーディングされているので、ちょっとDockerfileの中でごにょごにょするのは無理がありました。
で、どうしたかというと、実はSQL Server on Linuxはmssql-confを実行せずとも環境変数を適切に設定すれば動きます。コンテナでの起動を前提に考えれば実行ユーザーもroot固定としてよいので*2、ユーザー作成なども考えなくてもよさそうです。環境変数の一覧はここに書いてあります。
というわけで以上を踏まえて、RHELをベースとしたdockerイメージを作るためのDockerfileを作ってみました。
RHELをベースとしたコンテナをビルドする際の一般的な注意事項として、適切なsubscriptionを持っているRHEL Serverをホストにしてdocker buildしないとパッケージのインストールでエラーになる可能性があります。また、なぜかMSSQL_LCIDの指定をしてdocker buildすると実行エラーになったので、ビルドしたコンテナを起動するときに環境変数で指定するようにしてください。
Unofficial でサポートされませんが、開発環境などでつかってみたいという場合にはぜひどうぞ。