Docker installs Nginx

Method one, built by Dockerfile

Create Dockerfile

First, create the directory nginx for later related things.

w3cschool@w3cschool:~$ mkdir -p ~/nginx/www ~/nginx/logs ~/nginx/conf

The www directory maps to a virtual directory configured for the nginx container

The logs directory is mapped to the log directory of the nginx container

The profile in the conf directory is mapped to the profile of the nginx container

Go to the nginx directory you created and create Dockerfile

FROM debian:jessie

MAINTAINER NGINX Docker Maintainers "[email protected]"

ENV NGINX_VERSION 1.10.1-1~jessie

RUN apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 \
        && echo "deb http://nginx.org/packages/debian/ jessie nginx" >> /etc/apt/sources.list \
        && apt-get update \
        && apt-get install --no-install-recommends --no-install-suggests -y \
                                                ca-certificates \
                                                nginx=${NGINX_VERSION} \
                                                nginx-module-xslt \
                                                nginx-module-geoip \
                                                nginx-module-image-filter \
                                                nginx-module-perl \
                                                nginx-module-njs \
                                                gettext-base \
        && rm -rf /var/lib/apt/lists/*

# forward request and error logs to docker log collector
RUN ln -sf /dev/stdout /var/log/nginx/access.log \
        && ln -sf /dev/stderr /var/log/nginx/error.log

EXPOSE 80 443

CMD ["nginx", "-g", "daemon off;"]

Create a mirror with Dockerfile and replace it with your own name

docker build -t nginx .

Once the creation is complete, we can find the image we just created in the local mirror list

w3cschool@w3cschool:~/nginx$ docker images nginx
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              555bbd91e13c        3 days ago          182.8 MB

Method two, docker pull nginx

Find the nginx image on Docker Hub

w3cschool@w3cschool:~/nginx$ docker search nginx
NAME                      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
nginx                     Official build of Nginx.                        3260      [OK]       
jwilder/nginx-proxy       Automated Nginx reverse proxy for docker c...   674                  [OK]
richarvey/nginx-php-fpm   Container running Nginx + PHP-FPM capable ...   207                  [OK]
million12/nginx-php       Nginx + PHP-FPM 5.5, 5.6, 7.0 (NG), CentOS...   67                   [OK]
maxexcloo/nginx-php       Docker framework container with Nginx and ...   57                   [OK]
webdevops/php-nginx       Nginx with PHP-FPM                              39                   [OK]
h3nrik/nginx-ldap         NGINX web server with LDAP/AD, SSL and pro...   27                   [OK]
bitnami/nginx             Bitnami nginx Docker Image                      19                   [OK]
maxexcloo/nginx           Docker framework container with Nginx inst...   7                    [OK]
...

Here we pull the official mirror image

w3cschool@w3cschool:~/nginx$ docker pull nginx

After waiting for the download to complete, we can find the REPOSITORY mirror as nginx in the local mirror list.


Use nginx mirroring

Run the container

w3cschool@w3cschool:~/nginx$ docker run -p 80:80 --name mynginx -v $PWD/www:/www -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/logs:/wwwlogs  -d nginx  
45c89fab0bf9ad643bc7ab571f3ccd65379b844498f54a7c8a4e7ca1dc3a2c1e
w3cschool@w3cschool:~/nginx$

Command Description:

  • -p 80:80: Map the container's 80 ports to the host's 80 ports

  • --name mynginx: Name the container mynginx

  • -v $PWD/www:/www: Mount the www under the current directory in the host to the container/www

  • -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf: Mount the nginx.conf in the current directory in the host to the container/etc/nginx/nginx.conf

  • -$PWD/logs:/wwwlogs: Mount the logs in the current directory in the host to the container/wwwlogs

View how the container started

w3cschool@w3cschool:~/nginx$ docker ps
CONTAINER ID        IMAGE        COMMAND                      PORTS                         NAMES
45c89fab0bf9        nginx        "nginx -g 'daemon off"  ...  0.0.0.0:80->80/tcp, 443/tcp   mynginx
f2fa96138d71        tomcat       "catalina.sh run"       ...  0.0.0.0:81->8080/tcp          tomcat

Accessed through a browser

Docker installs Nginx