docker安装nginx并配置反向代理

安装nginx docker镜像,获取nginx官方镜像

docker pull nginx
docker pull nginx 
docker pull nginx

查看镜像库

docker images
docker images 
docker images

使用nginx镜像来创建nginx容器实例

docker run <span class="token operator">--</span>name nginx<span class="token operator">-</span>test <span class="token operator">-p</span> <span class="token number">80</span><span class="token punctuation">:</span><span class="token number">80</span> <span class="token operator">-d</span> nginx
docker run <span class="token operator">--</span>name nginx<span class="token operator">-</span>test <span class="token operator">-p</span> <span class="token number">80</span><span class="token punctuation">:</span><span class="token number">80</span> <span class="token operator">-d</span> nginx       
docker run --name nginx-test -p 80:80 -d nginx

创建容器成功后,启动nginx容器

docker run <span class="token operator">--</span>name nginx<span class="token operator">-</span>test <span class="token operator">-p</span> <span class="token number">80</span><span class="token punctuation">:</span><span class="token number">80</span> <span class="token operator">-d</span> nginx
docker run <span class="token operator">--</span>name nginx<span class="token operator">-</span>test <span class="token operator">-p</span> <span class="token number">80</span><span class="token punctuation">:</span><span class="token number">80</span> <span class="token operator">-d</span> nginx 
docker run --name nginx-test -p 80:80 -d nginx

访问本机测试,将nginx关键目录映射到本机,首先在本机创建nginx的一些文件存储目录

mkdir <span class="token operator">-p</span> <span class="token regex">/root/ngin</span><span class="token operator">x</span><span class="token operator">/</span>www <span class="token regex">/root/ngin</span><span class="token operator">x</span><span class="token operator">/</span>logs <span class="token regex">/root/ngin</span><span class="token operator">x</span><span class="token operator">/</span>conf
mkdir <span class="token operator">-p</span> <span class="token regex">/root/ngin</span><span class="token operator">x</span><span class="token operator">/</span>www <span class="token regex">/root/ngin</span><span class="token operator">x</span><span class="token operator">/</span>logs <span class="token regex">/root/ngin</span><span class="token operator">x</span><span class="token operator">/</span>conf    
mkdir -p /root/nginx/www /root/nginx/logs /root/nginx/conf

查看nginx-test容器id

docker ps <span class="token operator">-</span>a
docker ps <span class="token operator">-</span>a 
docker ps -a

将nginx-test容器配置文件copy到本地

docker cp c719d006e6f9<span class="token punctuation">:</span><span class="token regex">/etc/ngin</span><span class="token operator">x</span><span class="token operator">/</span>nginx<span class="token operator">.</span>conf <span class="token regex">/root/ngin</span><span class="token operator">x</span><span class="token operator">/</span>conf
docker cp c719d006e6f9<span class="token punctuation">:</span><span class="token regex">/etc/ngin</span><span class="token operator">x</span><span class="token operator">/</span>nginx<span class="token operator">.</span>conf <span class="token regex">/root/ngin</span><span class="token operator">x</span><span class="token operator">/</span>conf 
docker cp c719d006e6f9:/etc/nginx/nginx.conf /root/nginx/conf

创建新nginx容器nginx-web,并将www,logs,conf目录映射到本地

docker run <span class="token operator">-d</span> <span class="token operator">-p</span> <span class="token number">80</span><span class="token punctuation">:</span><span class="token number">80</span> <span class="token operator">--</span>name nginx<span class="token operator">-</span>web <span class="token operator">-</span>v <span class="token regex">/root/ngin</span><span class="token operator">x</span><span class="token operator">/</span>www<span class="token punctuation">:</span><span class="token operator">/</span>usr<span class="token regex">/share/ngin</span><span class="token operator">x</span><span class="token operator">/</span>html <span class="token operator">-</span>v <span class="token regex">/root/ngin</span><span class="token operator">x</span><span class="token regex">/conf/nginx</span><span class="token operator">.</span>conf<span class="token punctuation">:</span><span class="token regex">/etc/ngin</span><span class="token operator">x</span><span class="token operator">/</span>nginx<span class="token operator">.</span>conf <span class="token operator">-</span>v <span class="token regex">/root/ngin</span><span class="token operator">x</span><span class="token operator">/</span>logs<span class="token punctuation">:</span><span class="token operator">/</span>var<span class="token regex">/log/ngin</span><span class="token operator">x</span> nginx
docker run <span class="token operator">-d</span> <span class="token operator">-p</span> <span class="token number">80</span><span class="token punctuation">:</span><span class="token number">80</span> <span class="token operator">--</span>name nginx<span class="token operator">-</span>web <span class="token operator">-</span>v <span class="token regex">/root/ngin</span><span class="token operator">x</span><span class="token operator">/</span>www<span class="token punctuation">:</span><span class="token operator">/</span>usr<span class="token regex">/share/ngin</span><span class="token operator">x</span><span class="token operator">/</span>html <span class="token operator">-</span>v <span class="token regex">/root/ngin</span><span class="token operator">x</span><span class="token regex">/conf/nginx</span><span class="token operator">.</span>conf<span class="token punctuation">:</span><span class="token regex">/etc/ngin</span><span class="token operator">x</span><span class="token operator">/</span>nginx<span class="token operator">.</span>conf <span class="token operator">-</span>v <span class="token regex">/root/ngin</span><span class="token operator">x</span><span class="token operator">/</span>logs<span class="token punctuation">:</span><span class="token operator">/</span>var<span class="token regex">/log/ngin</span><span class="token operator">x</span> nginx 
docker run -d -p 80:80 --name nginx-web -v /root/nginx/www:/usr/share/nginx/html -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /root/nginx/logs:/var/log/nginx nginx

启动nginx

docker start nginx<span class="token operator">-</span>web
docker start nginx<span class="token operator">-</span>web 
docker start nginx-web

在本机/root/nginx/www目录下创建index.html内容为

<span class="token punctuation">[</span>root<span class="token variable">@localhost</span> <span class="token operator">~</span><span class="token punctuation">]</span> <span class="token operator"><</span><span class="token operator">!</span>DOCTYPE html<span class="token operator">></span> <span class="token filehandle symbol"><html></span> <span class="token filehandle symbol"><body></span> <span class="token filehandle symbol"><p><em></span>Thank you <span class="token keyword">for</span> using nginx<span class="token operator"><</span><span class="token regex">/em></p</span><span class="token operator">></span> <span class="token filehandle symbol"></body></span> <span class="token filehandle symbol"></html></span>
<span class="token punctuation">[</span>root<span class="token variable">@localhost</span> <span class="token operator">~</span><span class="token punctuation">]</span> <span class="token operator"><</span><span class="token operator">!</span>DOCTYPE html<span class="token operator">></span> <span class="token filehandle symbol"><html></span> <span class="token filehandle symbol"><body></span> <span class="token filehandle symbol"><p><em></span>Thank you <span class="token keyword">for</span> using nginx<span class="token operator"><</span><span class="token regex">/em></p</span><span class="token operator">></span> <span class="token filehandle symbol"></body></span> <span class="token filehandle symbol"></html></span> 
[root@localhost ~] <!DOCTYPE html> <html> <body> <p><em>Thank you for using nginx</em></p> </body> </html>

完成后重新访问本机,打开网页输入本机ip
在这里插入图片描述

设置反向代理

进入到/root/nginx/conf/nginx.conf 添加如下即可

server<span class="token punctuation">{<!-- --></span> listen <span class="token number">80</span><span class="token punctuation">;</span> charset utf<span class="token operator">-</span><span class="token number">8</span><span class="token punctuation">;</span> server_name <span class="token vstring string">192.168.181.128</span><span class="token punctuation">;</span> location <span class="token operator">/</span> <span class="token punctuation">{<!-- --></span> proxy_pass http<span class="token punctuation">:</span><span class="token operator">//</span><span class="token vstring string">192.168.181.128</span><span class="token punctuation">:</span><span class="token number">8080</span><span class="token punctuation">;</span> proxy_redirect <span class="token keyword">default</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span>
 server<span class="token punctuation">{<!-- --></span> listen <span class="token number">80</span><span class="token punctuation">;</span> charset utf<span class="token operator">-</span><span class="token number">8</span><span class="token punctuation">;</span> server_name <span class="token vstring string">192.168.181.128</span><span class="token punctuation">;</span> location <span class="token operator">/</span> <span class="token punctuation">{<!-- --></span> proxy_pass http<span class="token punctuation">:</span><span class="token operator">//</span><span class="token vstring string">192.168.181.128</span><span class="token punctuation">:</span><span class="token number">8080</span><span class="token punctuation">;</span> proxy_redirect <span class="token keyword">default</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> 
server{ listen 80; charset utf-8; server_name 192.168.181.128; location / { proxy_pass http://192.168.181.128:8080; proxy_redirect default; } }
user nginx<span class="token punctuation">;</span> worker_processes auto<span class="token punctuation">;</span> error_log <span class="token operator">/</span>var<span class="token regex">/log/ngin</span><span class="token operator">x</span><span class="token operator">/</span>error<span class="token operator">.</span>log notice<span class="token punctuation">;</span> pid <span class="token operator">/</span>var<span class="token regex">/run/nginx</span><span class="token operator">.</span>pid<span class="token punctuation">;</span> events <span class="token punctuation">{<!-- --></span> worker_connections <span class="token number">1024</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> http <span class="token punctuation">{<!-- --></span> include <span class="token regex">/etc/ngin</span><span class="token operator">x</span><span class="token operator">/</span>mime<span class="token operator">.</span>types<span class="token punctuation">;</span> default_type application<span class="token operator">/</span>octet<span class="token operator">-</span>stream<span class="token punctuation">;</span> log_format main <span class="token string">'$remote_addr - $remote_user [$time_local] "$request" '</span> <span class="token string">'$status $body_bytes_sent "$http_referer" '</span> <span class="token string">'"$http_user_agent" "$http_x_forwarded_for"'</span><span class="token punctuation">;</span> access_log <span class="token operator">/</span>var<span class="token regex">/log/ngin</span><span class="token operator">x</span><span class="token operator">/</span>access<span class="token operator">.</span>log main<span class="token punctuation">;</span> sendfile on<span class="token punctuation">;</span> keepalive_timeout <span class="token number">65</span><span class="token punctuation">;</span> include <span class="token regex">/etc/ngin</span><span class="token operator">x</span><span class="token regex">/conf.d/</span><span class="token operator">*</span><span class="token operator">.</span>conf<span class="token punctuation">;</span> server<span class="token punctuation">{<!-- --></span> listen <span class="token number">80</span><span class="token punctuation">;</span> charset utf<span class="token operator">-</span><span class="token number">8</span><span class="token punctuation">;</span> server_name <span class="token vstring string">192.168.181.128</span><span class="token punctuation">;</span> location <span class="token operator">/</span> <span class="token punctuation">{<!-- --></span> proxy_pass http<span class="token punctuation">:</span><span class="token operator">//</span><span class="token vstring string">192.168.181.128</span><span class="token punctuation">:</span><span class="token number">8080</span><span class="token punctuation">;</span> proxy_redirect <span class="token keyword">default</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span>
user nginx<span class="token punctuation">;</span> worker_processes auto<span class="token punctuation">;</span> error_log <span class="token operator">/</span>var<span class="token regex">/log/ngin</span><span class="token operator">x</span><span class="token operator">/</span>error<span class="token operator">.</span>log notice<span class="token punctuation">;</span> pid <span class="token operator">/</span>var<span class="token regex">/run/nginx</span><span class="token operator">.</span>pid<span class="token punctuation">;</span> events <span class="token punctuation">{<!-- --></span> worker_connections <span class="token number">1024</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> http <span class="token punctuation">{<!-- --></span> include <span class="token regex">/etc/ngin</span><span class="token operator">x</span><span class="token operator">/</span>mime<span class="token operator">.</span>types<span class="token punctuation">;</span> default_type application<span class="token operator">/</span>octet<span class="token operator">-</span>stream<span class="token punctuation">;</span> log_format main <span class="token string">'$remote_addr - $remote_user [$time_local] "$request" '</span> <span class="token string">'$status $body_bytes_sent "$http_referer" '</span> <span class="token string">'"$http_user_agent" "$http_x_forwarded_for"'</span><span class="token punctuation">;</span> access_log <span class="token operator">/</span>var<span class="token regex">/log/ngin</span><span class="token operator">x</span><span class="token operator">/</span>access<span class="token operator">.</span>log main<span class="token punctuation">;</span> sendfile on<span class="token punctuation">;</span>  keepalive_timeout <span class="token number">65</span><span class="token punctuation">;</span>  include <span class="token regex">/etc/ngin</span><span class="token operator">x</span><span class="token regex">/conf.d/</span><span class="token operator">*</span><span class="token operator">.</span>conf<span class="token punctuation">;</span> server<span class="token punctuation">{<!-- --></span> listen <span class="token number">80</span><span class="token punctuation">;</span> charset utf<span class="token operator">-</span><span class="token number">8</span><span class="token punctuation">;</span> server_name <span class="token vstring string">192.168.181.128</span><span class="token punctuation">;</span> location <span class="token operator">/</span> <span class="token punctuation">{<!-- --></span> proxy_pass http<span class="token punctuation">:</span><span class="token operator">//</span><span class="token vstring string">192.168.181.128</span><span class="token punctuation">:</span><span class="token number">8080</span><span class="token punctuation">;</span> proxy_redirect <span class="token keyword">default</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> 
user nginx; worker_processes auto; error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; keepalive_timeout 65; include /etc/nginx/conf.d/*.conf; server{ listen 80; charset utf-8; server_name 192.168.181.128; location / { proxy_pass http://192.168.181.128:8080; proxy_redirect default; } } }

这样就可以用本机80端口代理本机8080端口了,直接使用80访问端口

删除指定容器

docker stop nginx<span class="token operator">-</span>web docker rm <span class="token operator">-f</span> nginx<span class="token operator">-</span>web
 docker stop nginx<span class="token operator">-</span>web docker rm <span class="token operator">-f</span> nginx<span class="token operator">-</span>web 
docker stop nginx-web docker rm -f nginx-web

docker设置自动启动

systemctl list<span class="token operator">-</span>units <span class="token operator">--</span>type<span class="token operator">=</span>service systemctl list<span class="token operator">-</span>unit<span class="token operator">-</span>files <span class="token operator">|</span> grep enable systemctl enable docker systemctl disable docker
 systemctl list<span class="token operator">-</span>units <span class="token operator">--</span>type<span class="token operator">=</span>service  systemctl list<span class="token operator">-</span>unit<span class="token operator">-</span>files <span class="token operator">|</span> grep enable  systemctl enable docker  systemctl disable docker 
systemctl list-units --type=service systemctl list-unit-files | grep enable systemctl enable docker systemctl disable docker

docker容器设置自动启动

docker run <span class="token operator">-d</span> <span class="token operator">-p</span> <span class="token number">80</span><span class="token punctuation">:</span><span class="token number">80</span> <span class="token operator">--</span>name nginx<span class="token operator">-</span>web <span class="token operator">--</span>restart<span class="token operator">=</span>always <span class="token operator">-</span>v <span class="token regex">/root/ngin</span><span class="token operator">x</span><span class="token operator">/</span>www<span class="token punctuation">:</span><span class="token operator">/</span>usr<span class="token regex">/share/ngin</span><span class="token operator">x</span><span class="token operator">/</span>html <span class="token operator">-</span>v <span class="token regex">/root/ngin</span><span class="token operator">x</span><span class="token regex">/conf/nginx</span><span class="token operator">.</span>conf<span class="token punctuation">:</span><span class="token regex">/etc/ngin</span><span class="token operator">x</span><span class="token operator">/</span>nginx<span class="token operator">.</span>conf <span class="token operator">-</span>v <span class="token regex">/root/ngin</span><span class="token operator">x</span><span class="token operator">/</span>logs<span class="token punctuation">:</span><span class="token operator">/</span>var<span class="token regex">/log/ngin</span><span class="token operator">x</span> nginx
 docker run <span class="token operator">-d</span> <span class="token operator">-p</span> <span class="token number">80</span><span class="token punctuation">:</span><span class="token number">80</span> <span class="token operator">--</span>name nginx<span class="token operator">-</span>web <span class="token operator">--</span>restart<span class="token operator">=</span>always <span class="token operator">-</span>v <span class="token regex">/root/ngin</span><span class="token operator">x</span><span class="token operator">/</span>www<span class="token punctuation">:</span><span class="token operator">/</span>usr<span class="token regex">/share/ngin</span><span class="token operator">x</span><span class="token operator">/</span>html <span class="token operator">-</span>v <span class="token regex">/root/ngin</span><span class="token operator">x</span><span class="token regex">/conf/nginx</span><span class="token operator">.</span>conf<span class="token punctuation">:</span><span class="token regex">/etc/ngin</span><span class="token operator">x</span><span class="token operator">/</span>nginx<span class="token operator">.</span>conf <span class="token operator">-</span>v <span class="token regex">/root/ngin</span><span class="token operator">x</span><span class="token operator">/</span>logs<span class="token punctuation">:</span><span class="token operator">/</span>var<span class="token regex">/log/ngin</span><span class="token operator">x</span> nginx 
docker run -d -p 80:80 --name nginx-web --restart=always -v /root/nginx/www:/usr/share/nginx/html -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /root/nginx/logs:/var/log/nginx nginx
docker update <span class="token operator">--</span>restart<span class="token operator">=</span>always nginx<span class="token operator">-</span>web
 docker update <span class="token operator">--</span>restart<span class="token operator">=</span>always nginx<span class="token operator">-</span>web 
docker update --restart=always nginx-web

原文链接:https://blog.csdn.net/zhongguootngxu/article/details/117629480

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享