Docker Ubuntuコンテナにnginxをインストールするまでにやったこと

こんにちは、kisseです。

今回、モバイルアプリのバックエンドを作るためにwebサーバーを用意することになったので、練習した結果を書きます。

なぜにDocker?

Dockerにそんなに詳しくないのであれなのですが、まずはローカルの環境が汚れにくいのが一つの理由ですね。
普段からローカル環境の汚れ具合が半端じゃないので、意識して環境を汚さないように努めないとひどいことになるので。笑

あとは、最近Amazon Web Service(AWS)とか、Google Cloud Platform(GCP)などでもDockerコンテナのサービスがあるのは知っていたので、ローカルでDockerfileとか書いておけばパッとリモートでサーバー立てれるんじゃないかと思ったからですね。
よくわからないですけど。笑

なぜにnginx?

なんか早いらしいからですね。笑
あんまりよくわかってないので教えて欲しいですね。
色々他のサイトとかを見ていると、過去にクライアントがめっちゃ増える問題(C10K問題)に対応するために開発されたwebサーバーらしいので、強いってとこまでは理解しました。

なぜにUbuntu?

ぐぐってると情報が多いのと、友人がUbuntuを触ってるので困ったら助けてもらえるかなと思ってUbuntuにしました。
(バイト先のwebサーバーのOSもUbuntuだったような…)
CentOSとも迷ったんですけど、まあ慣れればどちらでもいいかと思ってUbuntuにしました。




まずはUbuntuコンテナを起動

まずはUbuntuのDockerイメージを入手します。

docker pull Ubuntu:latest
#<なんか色々出力>
#<Ubuntuイメージからコンテナを起動>
docker run -it --name ubuntu-nginx-server -p 8000:80 ubuntu:latest /bin/bash

これで、Ubuntuコンテナの起動が完了しました。

Ubuntuのバージョン確認

ここで、Ubuntuのバージョンを確認してみます。
/etc/lsb-releaseに記載されているので確認してみます。

cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS"

どうやら今回立てたUbuntuコンテナのバージョンは16.04だそうです。
このUbuntuのバージョンに対応したnginxのバージョンを選ぶ必要があります。

nginxをインストールするまでに準備

初期状態だと、色々コマンドが入ってないので片っ端から、apt-getでインストールします。
僕がインストールしたのはvimとwgetです。

apt-get update
...
apt-get install vim
...
apt-get install wget
...

nginxのインストール

とうとうnginxのインストールを開始します。
今回はパッケージからnginxをインストールします。
Linuxへのパッケージからのインストールを参考にしてインストールを行いました。
以下のコマンドを使って、nginx_signing.keyというファイルをダウンロードしてaptに追加します。

wget https://nginx.org/keys/nginx_signing.key
apt-key add nginx_signing.key

次に、/etc/apt/sources.listを編集します。
今回のUbuntuのバージョンは16.04で、このバージョンのcodenameはxenialです。
ファイルの末尾にこれらのバージョンに対応したnginxをインストールするように設定を追加します。(たぶん)

# ファイル末尾に以下の文を追加する。
deb http://nginx.org/packages/ubuntu/ xenial nginx
deb-src http://nginx.org/packages/ubuntu xenial nginx

これで、nginxをaptでインストールできるようになりました。
ではインストールします。

apt-get install nginx

これで、nginxがインストールできました。
とりあえず、nginxを起動してみましょう。

nginx
# nginxの起動
# コンテナにアクセスすると、nginxのウェルカムページが表示されます。
nginx -s quit
# nginxの停止

今回はlocalhost:8000でコンテナにアクセスできるようにコンテナを起動したので、それで確認してください。



おわり

今回はDockerでUbuntuコンテナを起動して、nginxをインストールする方法についてまとめました。
今度は、これをDockerfileで自動化するか、さらにnginxの設定を変更したりしてアプリの作成に関することををしようかと思ってます。

最終的な目標はスマホアプリのwebバックエンドを作成することなので、そっちの方向に進んでいきます。

最後まで読んでいただきありがとうございます!

あわせて読みたい