Docker安装配置Redis和Nginx


前言

一提起Docker想必小伙伴们都不陌生,近几年可谓是如火如荼;尤其是对容器化部署的团队来说,可谓是一大"神器"。

Docker的介绍本文不过多赘述,感兴趣的小伙伴可以去官网了解。

本文主要介绍几个常用镜像的安装和配置,用于学习和交流。


一、Docker安装配置Redis

1.拉取镜像

镜像地址: https://hub.docker.com/_/redis/tags

Docker官方镜像

选择拉取镜像版本(我们使用 docker pull redis:7.0.11 这个版本)

2.创建redis挂载文件

(注意我这里是/home/redis下)

 /home/redis/data
 /home/redis/redis.con

其中redis.conf主要关注以下参数

bind 127.0.0.1 		#注释掉这部分,这是限制redis只能本地访问
protected-mode no  	#默认yes,开启保护模式,限制为本地访问
daemonize no        #默认no
databases 16        #数据库个数(可选)
requirepass 123    	#密码
dir /data/          #输入本地redis数据库存放文件夹(可选)
appendonly yes     	#redis持久化 默认 no(可选)

注意给文件夹添加权限,不然有可能redis容器内部无权限访问

chmod -R 755 /home/redis/

3.启动容器

docker run --name redis -p 6379:6379 --privileged=true -v /home/redis/data:/data -v /home/redis/redis.conf:/etc/redis/redis.conf -d redis:7.0.11 /usr/local/bin/redis-server /etc/redis/redis.conf

启动命令参数解释

–name redis # 别名
-p 6379:6379 # 宿主机和容器端口映射
–privileged=true # 挂载容器卷目录权限
-v /home/redis/redis.conf:/etc/redis/redis.conf #[宿主机配置文件]:[容器配置文件]
-v /home/redis/data:/data #[宿主机数据存储位置]:[容器数据存储位置]
-d redis:7.0.11 #后台运行指定容器,并返回容器ID
/usr/local/bin/redis-server /etc/redis/redis.conf #绝对路径指定redis-server 以指定配置文件启动redis服

4.查看容器启动日志

docker ps -a 				#列出容器(-a显示所有的容器,包括未运行的)
docker logs -f CONTAINERID  #查看指定容器运行日志

5.在运行的容器中执行命令

docker exec -it CONTAINER ID sh

二、Docker安装配置Nginx

1.拉取镜像

镜像地址: https://hub.docker.com/_/nginx/tags

Docker官方镜像

选择拉取镜像版本(我们使用 docker pull nginx:1.23 这个版本)

2.创建nginx挂载文件

(注意我这里是/home/nginx下)

/home/nginx/conf/nginx.conf #配置文件
/home/nginx/conf/conf.d
/home/nginx/html 			#前端静态文件夹
/home/nginx/log  			#日志文件夹

注意给文件夹添加权限,不然有可能redis容器内部无权限访问

chmod -R 755 /home/nginx/

3.启动容器

docker run -d --name nginx -p 80:80 -p 443:443 --privileged=true -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/conf/conf.d/:/etc/nginx/conf.d -v /home/nginx/html:/usr/share/nginx/html -v /home/nginx/log:/var/log/nginx nginx:1.23

启动命令参数解释

-p 443:443 #开启https
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf #挂载配置文件
-v /home/nginx/conf/conf.d/:/etc/nginx/conf.d #挂载配置文件
-v /home/nginx/html:/usr/share/nginx/html #挂载静态页面
-v /home/nginx/log:/var/log/nginx #挂载日志文件夹

4.查看容器启动日志

docker ps -a 				#列出容器(-a显示所有的容器,包括未运行的)
docker logs -f CONTAINERID  #查看指定容器运行日志

以下是nginx.conf相关配置,大家可作为参考

#指定nginx进程文件,nginx启动时会把主进程的pid写入到这个文件中
pid        /var/run/nginx.pid;

#工作模式及连接数上限
events {
   #设置网路连接序列化,防止惊群现象发生,默认为on
  accept_mutex on;
  #设置一个进程是否同时接受多个网络连接,默认为off
  multi_accept on;
  #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
  #use epoll;
  #单个work进程允许的最大连接数,默认为512
  worker_connections  1024;
}
#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
  #文件扩展名与文件类型映射表。设定mime类型(邮件支持类型),类型由mime.types文件定义
  include       /etc/nginx/mime.types;
  #设定默认文件类型,默认为text/plain
  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"';
  #设定是否开启日志文件的访问权限,默认为off
  rewrite_log on;
  #设定访问日志和错误日志位置,日志格式
  access_log  /var/log/nginx/access.log  main;
  #设定nginx处理请求的方式,共有三种 sendfile|on|off off为标准模式,on为高效模式,sendfile为文件传输模式
  sendfile        on;
  #连接超时时间,默认为75s,可以在http,server,location块。
  keepalive_timeout  65;
  #设定gzip压缩,on|off|压缩等级
  #gzip  on;
  #nginx默认开启,减少网络报文段的数量,提高网络吞吐量
  #tcp_nodelay on;

  #设定服务器,监听80端口
  server {
    listen       80;
    server_name  127.0.0.1;
    charset utf-8;
    #服务转发配置
    location ^~/serverA//prefix/ {
     proxy_set_header HOST $host;
     proxy_set_header X-Forwarded-Proto $scheme;
     proxy_set_header X-Real-IP $remote_addr;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_set_header X-NginX-Proxy true;
     proxy_pass http://127.0.0.1:8001/;
    }
    #服务转发配置
    location ^~/serverB/prefix/ {
     proxy_set_header HOST $host;
     proxy_set_header X-Forwarded-Proto $scheme;
     proxy_set_header X-Real-IP $remote_addr;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_set_header X-NginX-Proxy true;
     proxy_pass http://127.0.0.1:8002/;
    }
    location / {
     root   /usr/share/nginx/html;
     index index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
      root   /usr/share/nginx/html;
    }
    #404页面配置
    error_page 404 /404.html;
    location = /404.html {
      root   /usr/share/nginx/html;
    }
  }

  #https配置
  server {
    listen       443 ssl;
    server_name  www.xxx;
    #证书路径
    ssl_certificate     /etc/nginx/conf.d/nginx.crt;
    #私钥路径
    ssl_certificate_key /etc/nginx/conf.d/nginx.key;
    #缓存ssl会话信息,避免频繁的重复握手
    ssl_session_cache    shared:SSL:1m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    #设置过期时间
    ssl_session_timeout  5m;
    #设置加密套件 HIGH:!aNULL:!MD5; 为默认值 也可以自定义
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
    ssl_prefer_server_ciphers  on;
    #服务转发配置
    location ^~/serverC/prefix/ {
     proxy_set_header Host $host;
     proxy_set_header X-Forwarded-Proto $scheme;
     proxy_set_header X-Real-IP $remote_addr;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_set_header X-NginX-Proxy true;
     proxy_pass http://127.0.0.1:8002/;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
    #404页面配置
    error_page 404 /404.html;
    location = /404.html {
      root   /usr/share/nginx/html;
    }
  }
}

总结

以上就是今天要讲的内容,本文简单介绍了Docker中几个常用镜像的安装和配置,对于其他的一些镜像小伙伴们可以参考一些其他文章摸索下,相信聪明的你一定会有收获;

有问题也欢迎大家评论区讨论,让我们一起探索共同进步!

小伙伴们如果有兴趣可以关注公众号【探索的石头】,里面会分享很多有趣的内容,相信大家会喜欢~

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐