基于 Docker 安装 Nginx,docker安装nginx


基于 Docker 安装 Nginx

查找Nginx镜像

  • 语法:docker search nginx
  • 示例:
[root@izbp13xko46hud9vfr5s94z ~]# docker search nginx
NAME                                                   DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
nginx                                                  Official build of Nginx.                        8834                [OK]                
jwilder/nginx-proxy                                    Automated Nginx reverse proxy for docker con…   1348                                    [OK]
richarvey/nginx-php-fpm                                Container running Nginx + PHP-FPM capable of579                                     [OK]
jrcs/letsencrypt-nginx-proxy-companion                 LetsEncrypt container to use with nginx as p…   380                                     [OK]
kong                                                   Open-source Microservice & API Management la…   194                 [OK]                
webdevops/php-nginx                                    Nginx with PHP-FPM                              106                                     [OK]
kitematic/hello-world-nginx                            A light-weight nginx container that demonstr…   99                                      
bitnami/nginx                                          Bitnami nginx Docker Image                      54                                      [OK]
zabbix/zabbix-web-nginx-mysql                          Zabbix frontend based on Nginx web-server wi…   54                                      [OK]
1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5   ubuntu-16-nginx-php-phpmyadmin-mysql-5          36                                      [OK]
linuxserver/nginx                                      An Nginx container, brought to you by LinuxS…   36                                      
tobi312/rpi-nginx                                      NGINX on Raspberry Pi / armhf                   19                                      [OK]
nginxdemos/nginx-ingress                               NGINX Ingress Controller for Kubernetes . Th…   11                                      
wodby/drupal-nginx                                     Nginx for Drupal container image                9                                       [OK]
blacklabelops/nginx                                    Dockerized Nginx Reverse Proxy Server.          9                                       [OK]
webdevops/nginx                                        Nginx container                                 8                                       [OK]
centos/nginx-18-centos7                                Platform for running nginx 1.8 or building n…   6                                       
nginxdemos/hello                                       NGINX webserver that serves a simple page co…   6                                       [OK]
1science/nginx                                         Nginx Docker images that include Consul Temp…   4                                       [OK]
centos/nginx-112-centos7                               Platform for running nginx 1.12 or building …   3                                       
pebbletech/nginx-proxy                                 nginx-proxy sets up a container running ngin…   2                                       [OK]
travix/nginx                                           NGinx reverse proxy                             1                                       [OK]
toccoag/openshift-nginx                                Nginx reverse proxy for Nice running on same…   1                                       [OK]
mailu/nginx                                            Mailu nginx frontend                            0                                       [OK]
ansibleplaybookbundle/nginx-apb                        An APB to deploy NGINX                          0                                       [OK]
[root@izbp13xko46hud9vfr5s94z ~]#

获取Nginx镜像

  • 语法:docker pull nginx
    这种方法获取的是最新片的nginx。
  • 示例:
[root@izbp13xko46hud9vfr5s94z ~]# docker pull nginx 
Using default tag: latest
latest: Pulling from library/nginx
f2aa67a397c4: Already exists 
1cd0975d4f45: Pull complete 
72fd2d3be09a: Pull complete 
Digest: sha256:3e2ffcf0edca2a4e9b24ca442d227baea7b7f0e33ad654ef1eb806fbd9bedcf0
Status: Downloaded newer image for nginx:latest
[root@izbp13xko46hud9vfr5s94z ~]#

启动nginx容器实例

  • 语法:docker run -d --name nginx nginx
  • 示例:
[root@izbp13xko46hud9vfr5s94z ~]# docker run -d --name nginx nginx
30c68de4884ef8a46ebe9c9dc4392f6ed3b74071d653dd1ce4c8b0847b0f5686
[root@izbp13xko46hud9vfr5s94z ~]#

说明:--name nginx nginx 第一个nginx是通过--name指定的nginx容器实例的名称,另一个nginx表示nginx仓库的名称。

查看nginx容器实例的进程信息

  • 通过docker top nginx查看
[root@izbp13xko46hud9vfr5s94z ~]# docker top nginx
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                25255               25233               0                   11:28               ?                   00:00:00            nginx: master process nginx -g daemon off;
101                 25363               25255               0                   11:28               ?                   00:00:00            nginx: worker process
[root@izbp13xko46hud9vfr5s94z ~]#
  • 通过ps -ef | grep nginx查看
[root@izbp13xko46hud9vfr5s94z ~]# ps -ef | grep nginx 
root     25255 25233  0 11:28 ?        00:00:00 nginx: master process nginx -g daemon off;
101      25363 25255  0 11:28 ?        00:00:00 nginx: worker process
root     25386 24942  0 11:31 pts/4    00:00:00 grep --color=auto nginx
[root@izbp13xko46hud9vfr5s94z ~]# 

进入nginx容器内

  • 语法:docker exec -it nginx bash
  • 示例:
[root@izbp13xko46hud9vfr5s94z static]# docker exec -it nginx bash 
root@c8e3cdeca4ca:/# ls

杀死nginx容器实例

  • 语法:docker kill -s KILL
  • 示例:
[root@izbp13xko46hud9vfr5s94z ~]# docker kill -s KILL 4a3ae8c39144
4a3ae8c39144
[root@izbp13xko46hud9vfr5s94z ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
356c999b5cd0        mysql               "docker-entrypoint.s…"   6 days ago          Up 6 days           3306/tcp            mysql
0d622f7cd0a4        redis               "docker-entrypoint.s…"   12 days ago         Up 12 days          6379/tcp            some-redis
[root@izbp13xko46hud9vfr5s94z ~]#

停止nginx实例

  • 语法:docker stop nginx
  • 示例:
[root@izbp13xko46hud9vfr5s94z ~]# docker stop nginx 
nginx
[root@izbp13xko46hud9vfr5s94z ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
356c999b5cd0        mysql               "docker-entrypoint.s…"   6 days ago          Up 6 days           3306/tcp            mysql
0d622f7cd0a4        redis               "docker-entrypoint.s…"   12 days ago         Up 12 days          6379/tcp            some-redis
[root@izbp13xko46hud9vfr5s94z ~]#

启动nginx容器实例

  • 语法:docker start nginx
  • 示例:
[root@izbp13xko46hud9vfr5s94z ~]# docker start nginx 
nginx
[root@izbp13xko46hud9vfr5s94z ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
4a3ae8c39144        nginx               "nginx -g 'daemon of…"   30 minutes ago      Up 19 seconds       80/tcp              nginx
356c999b5cd0        mysql               "docker-entrypoint.s…"   6 days ago          Up 6 days           3306/tcp            mysql
0d622f7cd0a4        redis               "docker-entrypoint.s…"   12 days ago         Up 12 days          6379/tcp            some-redis
[root@izbp13xko46hud9vfr5s94z ~]#

重启nginx容器实例

  • 语法:docker restart nginx
  • 示例:
[root@izbp13xko46hud9vfr5s94z ~]# docker restart nginx 
nginx
[root@izbp13xko46hud9vfr5s94z ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
4a3ae8c39144        nginx               "nginx -g 'daemon of…"   31 minutes ago      Up 2 seconds        80/tcp              nginx
356c999b5cd0        mysql               "docker-entrypoint.s…"   6 days ago          Up 6 days           3306/tcp            mysql
0d622f7cd0a4        redis               "docker-entrypoint.s…"   12 days ago         Up 12 days          6379/tcp            some-redis
[root@izbp13xko46hud9vfr5s94z ~]#

移除nginx容器实例

  • 语法:docker rm -f -v 4a3ae8c39144 (4a3ae8c39144:容器的ID)
  • 示例:
[root@izbp13xko46hud9vfr5s94z ~]# docker rm -f -v 4a3ae8c39144
4a3ae8c39144
[root@izbp13xko46hud9vfr5s94z ~]#

案例

暴露外部端口

基于docker run -d --name nginx nginx方法启动nginx后,Docker 容器并没有对外暴露访问的端口,即无法通过当前主机外部浏览器器访问nginx。那么该怎么样呢?

  • 语法:docker run --name nginx -d -p 80:80 nginx
    -p 80:80:通过-p来指定Docker容器中nginx实例对外开放的端口。本例中,第一个80端口是对外开放的端口,第二个80端口指对外开放的端口映射到容器里的端口号。

  • 示例:

[root@izbp13xko46hud9vfr5s94z ~]# docker run --name nginx -d -p 80:80 nginx 
7ed656da5864e18429aba08cf09a0a43d9f8138a60935b4d3aff2691ae050a62
[root@izbp13xko46hud9vfr5s94z ~]# docker top nginx 
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                20517               20503               0                   13:43               ?                   00:00:00            nginx: master process nginx -g daemon off;
101                 20557               20517               0                   13:43               ?                   00:00:00            nginx: worker process
[root@izbp13xko46hud9vfr5s94z ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
7ed656da5864        nginx               "nginx -g 'daemon of…"   19 seconds ago      Up 19 seconds       0.0.0.0:80->80/tcp   nginx
[root@izbp13xko46hud9vfr5s94z ~]#
  • 通过当前主机外的浏览器访问nginx,如下图:

指定外部的配置文件

  • 语法:docker run --name nginx -p 80:80 -v /develop/nginx/nginx.conf:/etc/nginx/nginx.conf -v /develop:/develop -d nginx
    说明:
    -v: 表示挂载一个本机目录或文件到容器里。
    -v /develop/nginx/nginx.conf:/etc/nginx/nginx.conf:将/develop/nginx/nginx.conf配置文件挂载到容器中/etc/nginx/nginx.conf这个配置文件中。
    -v /develop:/develop:将/develop这个目录挂载到容器里的/develop这个目录里。

  • 示例:

[root@izbp13xko46hud9vfr5s94z ~]# docker run --name nginx -p 80:80 -v /develop/nginx/nginx.conf:/etc/nginx/nginx.conf -v /develop:/develop -d nginx
c8e3cdeca4cac893c3f5b4aa055393dc69410059425bac9b99e9140ead50da45
[root@izbp13xko46hud9vfr5s94z ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
c8e3cdeca4ca        nginx               "nginx -g 'daemon of…"   4 seconds ago       Up 3 seconds        0.0.0.0:80->80/tcp   nginx
[root@izbp13xko46hud9vfr5s94z ~]#
  • 图示

注意事项:指定外部配置文件,同时需要指定nginx的首页面,否则会抛出404错误,原因就是因为nginx找不到配置文件中默认的index页面。
本例中,使用/develop/apps/static/index.html替代了容器里的nginx默认的index页面,同时,-v /develop:/develop挂载根目录即可访问子目录。

参考链接:
http://www.runoob.com/docker/docker-install-nginx.html
https://github.com/docker-library/docs/tree/master/nginx

相关内容

    暂无相关文章