今回は既存のNginxコンテナを利用しないでAlpine Linuxを利用して一から作成します。
Dockerのインストールができていない方はこちらをご確認してください。
やる事
- OSはAlpineを利用したコンテナイメージの作成
- Nginxをインストールする
イメージ確認
まずはAlpineのイメージがあるか確認します。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE
・・・ 省略
alpine latest 055936d39205 2 weeks ago 5.53MB
・・・ 省略
Alpineのイメージがない場合
無い場合は下記をコマンドを実行し取得します。
$ docker pull alpine
Using default tag: latest
latest: Pulling from library/alpine
e7c96db7181b: Pull complete
Digest: sha256:769fddc7cc2f0a1c35abb2f91432e8beecf83916c421420e6a6da9f8975464b6
Status: Downloaded newer image for alpine:latest
Nginxのコンテナの作成
ここからはDockerfileを作る為に、Nginxをインストールします。
Dockerfileにインストール方法を記入しないといけないので、インストールの内容はメモしておきます。
まずは、コンテナをバックグランドで起動をします。
$ docker run -itd --name コンテナ名 コンテナイメージ:タグ名
オプションの-itdについては他のサイトを参考にしてください。
$ docker run -itd --name my-nginx alpine:latest
とりあえず起動しているか確認してみます。
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
aa0249758cc7 alpine:latest "/bin/sh" 4 minutes ago Up 4 minutes my-nginx
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
aa0249758cc7 alpine:latest "/bin/sh" 5 minutes ago Up 5 minutes my-nginx
プロセスが起動しているのを確認できたので、ではコンテナの中に入ってみます。
$ docker exec -it my-php /bin/sh
Nginxをインストール
yumやapt-getの様なコマンドは無いです。
apkと言うパッケージマネージャがあるのでそれでインストールを行います。
検索 | search |
---|---|
インストール | add |
アンインストール | del |
アップデート | update |
ごみファイルを削除 | --no-cache |
$ apk add --update --no-cache nginx
実行してみてエラーとか無かったのでイメージを作成します。
尚、今回インストールする項目は、必要そうなものを入れています。
Dockerfile作成
下記がDockerfileの内容になります。
FROM alpine:latest
RUN apk add --update --no-cache nginx
EXPOSE 80
ENTRYPOINT /usr/sbin/nginx -g "daemon off;" -c /etc/nginx/nginx.conf
EXPOSE 80でnginxのポートを設定。SSLについては今度行います。
あとはENTRYPOINTでdaemon offでコンテナでサービス起動する為に設定します。
$ docker build -t my-nginx:latest .
Sending build context to Docker daemon 2.048kB
Step 1/4 : FROM alpine:latest
---> 055936d39205
Step 2/4 : RUN apk add --update --no-cache nginx
---> Running in 53347703c666
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
(1/2) Installing pcre (8.42-r1)
(2/2) Installing nginx (1.14.2-r1)
Executing nginx-1.14.2-r1.pre-install
Executing busybox-1.29.3-r10.trigger
OK: 7 MiB in 16 packages
Removing intermediate container 53347703c666
---> 9d676fbf29b6
Step 3/4 : EXPOSE 80
---> Running in ec6cba85448b
Removing intermediate container ec6cba85448b
---> 8cda441a6c1b
Step 4/4 : ENTRYPOINT /usr/sbin/nginx -g "daemon off;" -c /etc/nginx/nginx.conf
---> Running in 5b41a5d79539
Removing intermediate container 5b41a5d79539
---> f88b9049e661
Successfully built f88b9049e661
Successfully tagged my-nginx:latest
とりあえず作成するのに成功したみたいなので、docker imagesでイメージが作成出来ているか確認してみます。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
my-nginx latest f88b9049e661 About a minute ago 6.97MB
・・・ 省略
まとめ
DockerでNginxのコンテナの作成を行いました。
Kubernetesで利用する為に色々省きましたが、設定とかについてkubernetesのConfigMapで設定するので次回に設定方法などを書きます。