docker nginx配置_还在服务器上直接安装Nginx么,使用Docker安装不香么
Docker是什么?它是一个容器,相当于一个虚拟机,可以在容器里面安装各种镜像。例如安装nginx、redis、wordpress等,只需要去docker镜像市场下载对应软件的镜像可以实现一键安装,再也不用去配置各种麻烦的配置文件和环境变量了,因为镜像里面全部设置好了。同时可以实现秒级启动,容器的开销也极低。简单来说,Docker平台就是一个软件集装箱化平台,这就意味着我们自己可以构建应用程序,将
Docker是什么?它是一个容器,相当于一个虚拟机,可以在容器里面安装各种镜像。例如安装nginx、redis、wordpress等,只需要去docker镜像市场下载对应软件的镜像可以实现一键安装,再也不用去配置各种麻烦的配置文件和环境变量了,因为镜像里面全部设置好了。同时可以实现秒级启动,容器的开销也极低。
简单来说,Docker平台就是一个软件集装箱化平台,这就意味着我们自己可以构建应用程序,将其依赖关系一起打包到一个容器中,然后这容器就很容易运送到其他的机器上进行运行,而且非常易于装载、复制、移除,非常适合软件弹性架构。
今天我们就以docker安装以及使用docker安装nginx为例进行阐述。
安装与启动docker
使用yum命令查看可安装的docker版本:yum list | grep docker
安装命令:yum install docker-ce.x86_64启动:service docker start停止:service docker stop
设置docker 镜像源地址加速
如果docker不是官方镜像源地址,需要手动进行修改地址
修改方法:
使用 json 配置文件的方式,默认为 /etc/docker/daemon.json,在该文件中加入如下内容
{"registry-mirrors": ["https://registry.docker-cn.com"]}
docker常用操作命令
搜索docker镜像程序,例如搜索 nginx 镜像
命令:docker search nginx
拉取镜像,例如拉取上面NAME为nginx的镜像
docker pull nginx
运行容器
运行nginx容器
docker run --name myNginx -d -p 80:80 -v /usr/docker/myNginx/html:/usr/share/nginx/html -v /usr/docker/myNginx/conf.d:/etc/nginx/conf.d -v /usr/docker/myNginx/logs:/var/log/nginx Nginx
命令说明请看下面nginx具体的安装步骤
查看正在运行的镜像
命令:docker ps
查看历史运行的镜像
命令:docker ps -a
进入容器内部,例如进入name为nginx81的容器内部
命令:docker exec -it nginx81 bash
命令说明:nginx81 指的是创建容器的名称,用 docker ps 可以看到正在运行的容器名称
进入容器也可以用容器的ID进入docker exec -it 0117fdb52af6 bash
其中0117fdb52af6 为容器的id
容器时区与系统时区同步
容器内部时区默认是UTC而系统时区是CST,时间相差8个小时,为了同步时区从而达到同步时间运行容器的时候 将系统时区文件映射到容器中。
运行时加上参数 -v /etc/localtime:/etc/localtime
例如运行nginx容器:
命令:docker run --name myNginx -d -p 80:80 -v /etc/localtime:/etc/localtime nginx
如果是自己构建的docker容器,构建时注意设置时区问题
docker容器与系统之间文件拷贝
拷贝容器文件到系统:例如拷贝容器id为b62d9360c8bb的/etc/nginx/nginx.conf 到 系统/usr目录
命令: docker cp b62d9360c8bb:/etc/nginx/nginx.conf /usr
若是从容器内拷贝文件出来只需两个路径对调一下顺序即可
docker查看镜像以及镜像、容器的删除
查看已下载到系统的镜像文件
命令:docker images
其中 TAG 为镜像的版本号,IMAGE ID为镜像ID
删除镜像
命令:docker rmi 313343fef30b
其中313343fef30b为镜像的ID,需要注意的是删除镜像前需要确保该镜像不在容器中运行,且通过该镜像所构建的容器已经删除掉,否则删除报错
删除容器
命令:docker rm 7246d006ec9b
其中 7246d006ec9b 为容器ID,删除前容器必须是停止状态,否则删除报错
docker的卸载
查看已安装的 docker版本
yum list installed | grep docker
卸载docker
yum -y remove docker-ce.x86_64yum -y remove docker-client.x86_64yum -y remove docker-common.x86_64
docker 安装nginx
Nginx 是一个高性能的 HTTP 和反向代理 web 服务器以及做负载均衡、web缓存等
搜索nginx镜像
命令:docker search nginx
5.2拉取nginx镜像
例如拉取上面NAME为nginx的镜像
命令:docker pull nginx
查看所下载的nginx镜像
命令:docker images
运行nginx容器
docker run --name myNginx -d -p 443:443 -v /usr/docker/myNginx/html:/usr/share/nginx/html -v /usr/docker/myNginx/conf.d:/etc/nginx/conf.d -v /usr/docker/myNginx/logs:/var/log/nginx ginx:latest
命令说明:
docker run :运行容器
--name:为容器取得别名
myNginx:容器的别名,自定义
-d:指定容器的运行方式为后台运行
-p:指定将系统的443端口映射到nginx容器中的443端口
:linux命令换行符
-v:映射容器中的目录到系统中的目录
-v /usr/docker/myNginx/html:/usr/share/nginx/html :映射nginx静态页面目录系统目录便于部署静态页面项目
-v /usr/docker/myNginx/conf.d:/etc/nginx/conf.d 映射nginx配置文件目录到系统目录便于配置nginx
-v /usr/docker/myNginx/logs:/var/log/nginx设置nginx日志文件到系统目录便于查看nginx日志
nginx:latest :nginx为镜像名称,latest为版本号
nginx代理服务配置
例如需要把域名xxx.com所有以/order/为前缀的请求代理转发到http://168.168.28.35:8080/ORDERSERVICE服务进行处理
(1) 在nginx的配置目录下增加配置文件eur.conf名字自定义,文件后缀必须为conf,配置文件的目录如5.3所运行的容器,已把nginx容器的配置文件目录映射到了系统的/usr/docker/myNginx/conf.d目录
(2) 编写代理配置文件
server{ listen 443; server_name xxx.com; location / { root /usr/share/nginx/html; index index.html index.htm; } location /order/ { proxy_pass http://168.168.28.35:8080/ORDERSERVICE/; }}
配置说明:
isten 443:表示监听443端口,此端口需与容器映射端口对应,例如运行nginx容器时
将系统的443映射到容器的443端口则此处配置应监听443,若系统程序端口是8081,此时将系统8081端口映射到容器的80端口,那么配置文件需要监听的是80端口。
server_name:服务的域名
location / :nginx默认访问请求,root 指nginx访问的静态文件目录,index 指定默认的首页
location /order/ :处理jiahetech.com/order/开头的请求
proxy_pass:处理请求的服务地址
nginx配置https
把https相关的证书文件和证书key放到配置目录下面,再将上面配置修改如下
server{ listen 443 ssl; server_name xxx.com; ssl_certificate /etc/nginx/conf.d/ssl/server.crt; ssl_certificate_key /etc/nginx/conf.d/ssl/server.key; location / { root /usr/share/nginx/html; index index.html index.htm; } location /order/ { proxy_pass http://168.168.28.35:5581/ORDERSERVICE/; }}
配置说明:
listen 443 ssl:监听443端口,开启ssl
ssl_certificate :ssl证书的路径(容器内的路径,不是映射到宿主机的路径)
ssl_certificate_key :证书key文件路径(容器内的路径,不是映射到宿主机的路径)
5.6nginx反向代理请求头问题
若业务需要获取客户端的请求的真实IP,手动设置相关请求头信息,默认不设置话,业务服务端获取的IP信息为nginx的IP地址
location /order/ { proxy_pass http://168.168.28.35:5581/ORDERSERVICE/; #设置代理请求头信息 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
5.7.nginx常用操作命令
nginx -s stop 快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。
nginx -s quit 平稳关闭Nginx,保存相关信息,有安排的结束web服务。
nginx -s reload 因改变了Nginx相关配置,需要重新加载配置而重载。
nginx -s reopen 重新打开日志文件。
------------------------------------------------END-----------------------------------------------------------------
你的一个赞一个关注是我创作的动力,是我持续输出的能量源泉,老铁关注一波吧!
更多推荐
所有评论(0)