docker pull nginx:latest
查看镜像
docker images 或者 docker images -a
2.启动nginx容器
docker run -d -p 80:80 --name nginx nginx
使用docker run命令,启动nginx容器。
3、修改nginx监听端口
不希望nginx监听默认的80端口,可以使用-p选项,修改映射端口。
docker run -d -p 8080:80 --name nginx nginx
如果想要修改nginx的配置或内容,可以使用-v选项进行数据卷映射。
nginx的配置内容主要包括:
我们将网站设置在宿主机上,并通过数据卷映射的方式到nginx展示。命令如下:
docker run -d -p 8080:80 -v 宿主机绝对路径:/usr/share/nginx/html --name nginx nginx
利用数据卷映射,可以修改nginx的默认配置和加载网站。同时,容器创建后,就无法修改。一旦关闭容器,容器中的临时数据就会消失。利用数据卷映射,也很好解决了数据持久化的问题。
// 启动容器
docker run -d -p 80:80 nginx
// 创建容器挂载路径
mkdir -p /data/nginx/{conf,conf.d,html,logs}
// 查看容器ID
docker ps -a
// 复制配置文件到挂载路径
docker cp nginx:/etc/nginx/nginx.conf /data/nginx/conf/
docker cp nginx:/etc/nginx/conf.d/default.conf /data/nginx/conf.d/
docker cp nginx:/usr/share/nginx/html /data/nginx/html
// 关闭容器
docker stop nginx
// 删除容易
docker rm nginx
// 以挂载的方式启动容器
docker run -id --name=nginx \
-p 8080:80 \
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /data/nginx/conf.d:/etc/nginx/conf.d \
-v /data/nginx/logs:/var/log/nginx \
-v /data/nginx/html:/usr/share/nginx/html \
-d nginx
当docker跑nginx镜像时,设置端口映射,则只有该映射端口起作用,nginx配置的其他端口无效 所以只对80 生效
如果想使用多个端口需要
// 以挂载的方式启动容器
docker run -id --name=nginx \
-p 80:80 \
-p 8085:8085 \
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /data/nginx/conf.d:/etc/nginx/conf.d \
-v /data/nginx/logs:/var/log/nginx \
-v /data/nginx/html:/usr/share/nginx/html \
-d nginx
// 以挂载的方式启动容器 https 证书目录
docker run -id --name=nginx \
-p 80:80 \
-p 8085:8085 \
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /data/nginx/conf.d:/etc/nginx/conf.d \
-v /data/nginx/logs:/var/log/nginx \
-v /data/nginx/html:/usr/share/nginx/html \
-v /data/nginx/cert:/etc/nginx -d nginx \
-d nginx
#配置 nginx.conf
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;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
# 配置default.conf
server {
listen 80;
listen [::]:80;
server_name localhost;
#解决Router(mode: 'history')模式下,刷新路由地址不能找到页面的问题
location / {
# docker 使用容器地址才能找到文件 自动映射到挂载目录
root /usr/share/nginx/html;
index index.html index.htm;
if (!-e $request_filename) {
rewrite ^(.*)$ /index.html?s=$1 last;
break;
}
}
#后台服务配置,配置了这个location便可以通过http://域名/jeecg-boot/xxxx 访问
location ^~ /shimmer{
proxy_pass http://127.0.0.1:7001/shimmer/;# 如果是用docker请填写真实IP 因为容器内部访问不到本127.0.0.1或locahost
proxy_set_header Host 127.0.0.1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
将静态资源放置~/nginx/html目录中,即可访问.
vim ~/nginx/conf.d/static.conf
一个端口配置一个项目
server {
listen 81; # 监听的端⼝
server_name localhost; # 域名或ip
location / { # 访问路径配置
root /usr/share/nginx/index;# 根⽬录
index index.html index.htm; # 默认⾸⻚
}
error_page 500 502 503 504 /50x.html; # 错误⻚⾯
location = /50x.html {
root html;
}
}
server {
listen 81; # 监听的端⼝
server_name www.ahunag.com; # 域名或ip
location / { # 访问路径配置
root /usr/share/nginx/index;# 根⽬录
index index.html index.htm; # 默认⾸⻚
}
error_page 500 502 503 504 /50x.html; # 错误⻚⾯
location = /50x.html {
root html;
}
}
upstream tomcat-kkb{
server 192.168.220.12:8080;
}
server {
listen 80; # 监听的端⼝
server_name www.kkb.com; # 域名或ip
location / { # 访问路径配置
root index;# 根⽬录
proxy_pass http://tomcat-kkb;
index index.html index.htm; # 默认⾸⻚
}
}
nginx upstream tomcat-kkb
{ server 192.168.220.12:8888 weight=2;
server 192.168.220.12:8080;
}
ajax请求:url: “/test”
使用代理到->192.168.111.135:8888/test
server{
listen 81;
location / {
root /usr/share/nginx;
index test.html;
}
location /test {
proxy_pass http://192.168.111.135:8888/test;
}
}
// 以挂载的方式启动容器 https 证书目录
docker run -id --name=nginx \
-p 80:80 \
-p 8085:8085 \
-p 443:443 \
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /data/nginx/conf.d:/etc/nginx/conf.d \
-v /data/nginx/logs:/var/log/nginx \
-v /data/nginx/html:/usr/share/nginx/html \
-v /data/nginx/cert:/etc/nginx/cert \
-d nginx
这种配置需要重
济南服务
命令 描述
docker pull nginx 下载最新版Nginx镜像 (其实此命令就等同于 : docker pull nginx:latest )
docker pull nginx:xxx 下载指定版本的Nginx镜像 (xxx指具体版本号)
# 创建挂载目录
mkdir -p /docker/nginx/conf
mkdir -p /docker/nginx/log
mkdir -p /docker/nginx/html
# 生成容器
# 将容器nginx.conf文件复制到宿主机
# 将容器conf.d文件夹下内容复制到宿主机
# 将容器中的html文件夹复制到宿主机
docker run --name nginx -p 80:80 -d nginx
docker cp nginx:/etc/nginx/nginx.conf /data/docker/nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d /data/docker/nginx/conf/conf.d
docker cp nginx:/usr/share/nginx/html /data/docker/nginx/
# 直接执行docker rm nginx或者以容器id方式关闭容器
# 找到nginx对应的容器id
docker ps -a
# 关闭该容器
docker stop nginx
# 删除该容器
docker rm nginx
# 删除正在运行的nginx容器
docker rm -f nginx
docker的--restart选项可以实现自动启动,其可选参数包括:
sudo systemctl enable docker.service
docker run -d --restart=always nginx
如果nginx容器已经启动,可以使用docker update更新。
docker update --restart=always nginx