検証のために特定OSと特定バージョンのアプリのインストールはいつだって必要。NginxとUbuntuの特定バージョンをDockerで作成する。
各コマンドの解説や何をやっているかは、後述するとしてまずは結論から。
Ubuntuに特定バージョンのNginxをインストールする
今回はUbuntu18.04を利用する。検証が目的なので環境はDockerを利用する
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
docker run --rm -it ubuntu:18.04 /bin/bash
#以降、コンテナ内部
apt -y update
apt -y install curl gnupg2 lsb-release
echo "deb http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | tee /etc/apt/sources.list.d/nginx.list
curl -fsSL https://nginx.org/keys/nginx_signing.key | apt-key add -
apt -y update
apt install -y nginx-light=1.14.0-0ubuntu1.10
nginx -v
> nginx version: nginx/1.14.0 (Ubuntu)
|
以上。これでUbuntu18.04の中に、Nginx1.14.0がインストールされた。
各コマンドの解説
1
| docker run --rm -it ubuntu:18.04 /bin/bash
|
docker run <name> <hoge>
は name コンテナで hoge コマンドを起動する。
-it
オプションを付与しないと/bin/bash
を起動したらコンテナが終了する。-it
を付与することで、Terminal上で標準入出力を可能とする状態とする。
1
2
| apt -y update
apt -y install curl gnupg2 lsb-release
|
コンテナは素の状態のため、まずはaptをアップデートする。その後、curl
,gnupg2
,lsb-release
をインストールする。curl
の説明は割愛するとして、gnupg2
はaptの公開鍵をインストールする際に必要となるパッケージである。後述のapt-key add -
実行時に
1
2
3
| # curl -fsSL https://nginx.org/keys/nginx_signing.key | apt-key add -
E: gnupg, gnupg2 and gnupg1 do not seem to be installed, but one of them is required for this operation
(23) Failed writing body
|
というエラーが出るために必要となる。
lsb-release
はUbuntuのモジュールを出力してくれるコマンド。dockerでイメージを指定しているのだから固定でも良いと言えば良いのだが、コマンド化しておくことで、FROMのイメージを変えても使いまわせる(はず)
1
2
| echo "deb http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | tee /etc/apt/sources.list.d/nginx.list
curl -fsSL https://nginx.org/keys/nginx_signing.key | apt-key add -
|
ubuntuディストリビューションの特定バージョンのnginxをaptに追加するtee
の代わりに>
でも良いかもしれないが、Dockerfileにする際にteeを利用していた方が標準出力に戻ってくるので確認がしやすい(はず)
curlでnginxの公開鍵をaptに追加している。
1
2
| apt -y update
apt install -y nginx-light=1.14.0-0ubuntu1.10
|
メイン。aptを追加したので、再び再進化した上で特定バージョンのnginxをインストールする。この時の選び方だが
1
| apt-cache showpkg nginx
|
を行うことで、各種バージョンのnginxを確認することができる。今回はnginx-lightの1.14.0を選択したため
1
| apt install -y nginx-light=1.14.0-0ubuntu1.10
|
ということとなった。nginx
Dockerfileにした場合
試していないが、おそらく
Dockerfile1
2
3
4
5
6
7
8
| FROM ubuntu:18.04
RUN apt -y update && \
apt -y install curl gnupg2 ca-certificates lsb-release && \
echo "deb http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | tee /etc/apt/sources.list.d/nginx.list && \
curl -fsSL https://nginx.org/keys/nginx_signing.key | apt-key add - && \
apt -y update && \
apt install -y nginx-light=1.14.0-0ubuntu1.10
|
となると考えている。