Docker离线部署Nginx
说明:
在有网络的环境上制作Nginx的镜像包,导出并上传至无网络的环境上,启动Nginx即可
1.搜索nginx镜像包
docker search nginx
2.拉取nginx镜像
说明:
如果:后不写版本号,则默认拉取最新的
docker pull nginx
查看镜像
docker images
3.创建容器并启动nginx
docker run -d -p 8080:80 --name nginx_docker nginx:latest
说明:
-d: 后台运行容器
-p :指定容器暴露的端口,映射宿主机端口号和容器端口号
--name:指定容器名字,后续可以通过名字进行容器管理
4.测试
浏览器中输入你的ip地址 + 端口号,如下图所示:(成功状态)
5.创建宿主机配置文件(用于后续挂载nginx配置文件)
cd /usr/local/ mkdir nginx cd nginx/ mkdir data logs conf conf.d ll
说明:
data:静态资源,一般前端页面
logs:nginx日志
conf:nginx配置,一般配置缓存、限流在这个里面
conf.d: nginx配置,代理、转发、负载、集群
5.1 编辑data文件夹下的index.html
cd /usr/local/nginx/data
vim index.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>成功访问nginx</title> </head> <body> <h1>这是用docker启动的</h1> </body> </html>
5.2 编辑conf文件夹下的nginx.conf
cd /usr/local/nginx/conf
vim nginx.conf
user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; 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; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; }
5.3 编辑conf.d文件夹下的host.conf
cd /usr/local/nginx/conf.d
vim host.conf
# 后端转发 server { listen 9264; server_name 192.168.94.110; location / { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://192.168.94.110:9264/; } } # 前端转发 server{ listen 8081; server_name 192.168.94.110; location / { root /usr/share/nginx/html; } }
6.创建新的容器并挂载宿主机配置文件启动nginx(开一个相同的服务,端口号不同)
docker run -d -p 8081:80 --name nginx_docker_2 --restart=always --privileged=true -v /usr/local/nginx/data:/usr/share/nginx/html nginx:latest
说明:
-d: 后台运行容器
-p :指定容器暴露的端口,映射宿主机端口号和容器端口号
--name:指定容器名字,后续可以通过名字进行容器管理
--restart=always:使容器自动启动
--privileged=true:开启特权模式(如遇到权限问题错误,可加此参数)
-v:挂载宿主机目录和 docker容器中的目录,前面是宿主机目录,后面是容器内部目录
7.测试(挂载宿主机配置文件)
浏览器中输入你的ip地址 + 端口号,如下图所示:(成功状态)
8.停止并删除容器
docker rm -f f86c8cc956e3
9.导出镜像
docker save -o nginx.tar nginx:latest
10.将镜像包nginx.tar上传至无网络的环境上,执行
docker load -i nginx.tar
查看镜像是否导入进来
docker images
11.直接启动nginx
docker run -d -p 8081:80 --name nginx --restart=always --privileged=true nginx:latest
说明:
-d: 后台运行容器
-p :指定容器暴露的端口,映射宿主机端口号和容器端口号
--name:指定容器名字,后续可以通过名字进行容器管理
--restart=always:使容器自动启动
--privileged=true:开启特权模式(如遇到权限问题错误,可加此参数)
浏览器中输入你的ip地址 + 端口号,如下图所示:(成功状态)