關於Docker運行Nginx的文章層出不窮,鄙人推薦http://www.runoob.com/docker/docker-install-nginx.html這篇文章中介紹的兩種方法。在這裏,我着重介紹下第二種方法吧,直接從docker Hub上拉取Nginx鏡像,供咱們使用。php
這裏,我在虛擬機中安裝了CentOS7,而後,安裝docker,這一步,就沒必要詳細介紹了。假設,你已經成功安裝了docker。我這裏安裝的版本是1.13.1,API版本1.26,html
Client: Version: 1.13.1 API version: 1.26 Package version: <unknown> Go version: go1.8.3 Git commit: 774336d/1.13.1 Built: Wed Mar 7 17:06:16 2018 OS/Arch: linux/amd64 Server: Version: 1.13.1 API version: 1.26 (minimum version 1.12) Package version: <unknown> Go version: go1.8.3 Git commit: 774336d/1.13.1 Built: Wed Mar 7 17:06:16 2018 OS/Arch: linux/amd64 Experimental: false
首先,建立一個目錄:mysql
mkdir -p ~/nginx/www ~/nginx/logs ~/nginx/conf
命令進入nginx目錄。linux
而後,咱們經過docker search命令,來檢索nginx鏡像nginx
docker search nginx
INDEX NAME DES CRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io/nginx Off icial build of Nginx. 8564 [OK] docker.io docker.io/jwilder/nginx-proxy Aut omated Nginx reverse proxy for docker c... 1335 [OK] docker.io docker.io/richarvey/nginx-php-fpm Con tainer running Nginx + PHP-FPM capable ... 547 [OK] docker.io docker.io/jrcs/letsencrypt-nginx-proxy-companion Let sEncrypt container to use with nginx as... 368 [OK] docker.io docker.io/kong Ope n-source Microservice & API Management ... 188 [OK] docker.io docker.io/webdevops/php-nginx Ngi nx with PHP-FPM 103 [OK] docker.io docker.io/kitematic/hello-world-nginx A l ight-weight nginx container that demons... 99 docker.io docker.io/bitnami/nginx Bit nami nginx Docker Image 52 [OK] docker.io docker.io/zabbix/zabbix-web-nginx-mysql Zab bix frontend based on Nginx web-server ... 51 [OK] docker.io docker.io/1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5 ubu ntu-16-nginx-php-phpmyadmin-mysql-5 35 [OK] docker.io docker.io/linuxserver/nginx An Nginx container, brought to you by Linu... 35 docker.io docker.io/tobi312/rpi-nginx NGI NX on Raspberry Pi / armhf 19 [OK] docker.io docker.io/nginxdemos/nginx-ingress NGI NX Ingress Controller for Kubernetes . ... 11 docker.io docker.io/blacklabelops/nginx Doc kerized Nginx Reverse Proxy Server. 9 [OK] docker.io docker.io/wodby/drupal-nginx Ngi nx for Drupal container image 9 [OK] docker.io docker.io/webdevops/nginx Ngi nx container 8 [OK] docker.io docker.io/centos/nginx-18-centos7 Pla tform for running nginx 1.8 or building... 6 docker.io docker.io/nginxdemos/hello NGI NX webserver that serves a simple page ... 6 [OK] docker.io docker.io/1science/nginx Ngi nx Docker images that include Consul Te... 4 [OK] docker.io docker.io/centos/nginx-112-centos7 Pla tform for running nginx 1.12 or buildin... 3 docker.io docker.io/behance/docker-nginx Pro vides base OS, patches and stable nginx... 2 [OK] docker.io docker.io/pebbletech/nginx-proxy ngi nx-proxy sets up a container running ng... 2 [OK] docker.io docker.io/toccoag/openshift-nginx Ngi nx reverse proxy for Nice running on sa... 1 [OK] docker.io docker.io/travix/nginx NGi nx reverse proxy 1 [OK] docker.io docker.io/mailu/nginx Mai lu nginx frontend 0 [OK]
而後,經過docker pull命令,從遠程拉取nginx鏡像,命令以下:web
docker pull nginx
拉取成功後,咱們能夠經過docker images命令,查看鏡像:sql
[root@localhost nginx]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/nginx latest ae513a47849c 4 weeks ago 109 MB
而後,經過docker run命令啓動容器,運行鏡像:docker
[root@localhost nginx]# docker run -p 80:80 --name mynginx -v $PWD/www:/www -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf --privileged=true -v $PWD/logs:/www/logs -v $PWD/html:/etc/nginx/html -d nginx
這裏,-v $PWD/www:/www把主機當前目錄下的www目錄綁定到了docker中www目錄。須要注意的是,ubuntu
因爲docker容器須要對nginx.conf的訪問權限,所以,綁定nginx.conf文件時,後面添加--privileged=true命令。centos
經過docker ps命令,查看容器運行情況
[root@localhost nginx]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5b3e68a0d311 nginx "nginx -g 'daemon ..." 26 minutes ago Up 26 minutes 0.0.0.0:80->80/tcp mynginx
也能夠經過,docker ps -a查看全部容器,包括已經退出的容器。
通過以上步驟,nginx鏡像已經成功在docker容器中運行,接下來,咱們經過訪問http://localhost來驗證,正常狀況下:
這樣,咱們的nginx已經啓動成功了。
注意事項:
一、若是出現運行容器後,docker ps沒有發現容器進程,說明容器啓動過程發生錯誤閃退,能夠經過docker ps -a看到閃退的容器,而後,經過docker logs 容器名或容器ID來查看docker日誌,裏面記錄了容器啓動發生錯誤的緣由,找到問題所在,就好辦了。
這個過程當中,還會常常用到docker rm移除容器的命令,docker logs 查看容器日誌,docker stop/start/restart等中止/啓動/重啓命令。
由此,docker中運行NGINX的過程就完成了,一回生,二回熟,nginx的配置到啓動,只須要秒秒鐘。