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:开启特权模式(如遇到权限问题错误,可加此参数)
12.测试
浏览器中输入你的ip地址 + 端口号,如下图所示:(成功状态)