docker的安装

1、设置阿里的镜像

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

如果设置时报如下错

-bash: yum-config-manager: command not found,

是因为没有安装这个命令,这个命令在yum-utils 包里,安装命令如下:

yum install -y yum-utils device-mapper-persistent-data lvm2

2、查看所有的docker

yum list docker-ce --showduplicates | sort -r

3、安装最新版本

yum install -y docker-ce docker-ce-cli containerd.io

4、安装指定版本

yum install docker-ce-版本 docker-ce-版本 containerd.io

5、安装最新版本报错

报错提示

(try to add ‘–allowerasing’ to command line to replace conflicting packages or ‘–skip-broken’ to skip uninstallable packages or ‘–nobest’ to use not only best candidate packages)

原因

这个错误信息通常出现在使用Linux操作系统中的包管理器(如apt或yum)安装或更新软件包时。它表明有一个或多个软件包的依赖关系冲突,而且正在尝试安装或升级的软件包需要替换现有的、同名但版本不同的软件包。

解决方法

在命令行中添加 --allowerasing 参数。这将允许包管理器替换冲突的软件包。

安装命令

yum install --allowerasing -y docker-ce docker-ce-cli containerd.io

启动docker

systemctl start docker

停止docker

systemctl stop docker

重启docker

systemctl restart docker

查看docker状态

systemctl status docker

设置docker开机自启动

systemctl enable docker

docker-compose的安装

1、在github上下载docker-compose包

https://github.com/docker/compose/releases

2、上传到服务器

上传到/usr/local/bin目录下,并重命名docker-compose

3、给docker-compose赋予执行权限

chmod +x /usr/local/bin/docker-compose

4、查看版本号

docker-compose -version

使用docker拉取Java

1、查看Java官方镜像

docker search java

2、拉取Java镜像

docker pull <Java镜像名称:tag>

3、运行Java容器

docker run -it <Java镜像名称:tag> /bin/bash

4、查看Java版本

java -version

使用docker-compose部署Nginx Proxy Manager

1、创建一个Nginx目录,并进入

mkdir NginxProxyManager && cd NginxProxyManager 

2、创建docker-compose.yml文件

vi docker-compose.yml

3、编写docker-compose.yml文件

version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'              # 不建议修改端口
      - '81:81'              # 可以把冒号左边的 81 端口修改成你服务器上没有被占用的端口
      - '443:443'            # 不建议修改端口
    volumes:
      - ./data:/data         # 点号表示当前文件夹,冒号左边的意思是在当前文件夹下创建一个 data 目录,用于存放数据,如果不存在的话,会自动创建
      - ./letsencrypt:/etc/letsencrypt  # 点号表示当前文件夹,冒号左边的意思是在当前文件夹下创建一个 letsencrypt 目录,用于存放证书,如果不存在的话,会自动创建

4、使用docker-compose启动NginxProxyManager

docker-compose up -d

5、在浏览器访问NginxProxyManager进行配置

NginxProxyManager默认的端口是81,所以只需要访问:服务器IP:81,就可以进入页面

初始的用户和密码如下:
Email: admin@example.com
Password: changeme

使用docker-compose 部署Mysql数据库

1、创建mysql目录,并进入

下述命令将创建mysql目录,并且mysql目录里面有三个文件夹,分别是config(配置文件),data(数据),logs(日志)

mkdir -p mysql/{log,data.config} && cd mysql

2、创建docker-compose.yml配置文件

version: '3'
services:
  mysql: 							# 名称
    image: mysql:latest				# mysql镜像版本,也可以mysql:latest直接最新版本
    container_name: mysql	 		# 容器名称
    ports:
      - 3306:3306 					# 指定宿主机端口与容器端口映射关系,宿主机:容器  
    restart: always 				# 表示容器随docker启动自启  
    environment:
      LANG: en_US.UTF-8 			# 设置语言
      MYSQL_ROOT_PASSWORD: 123456 	# root用户密码
	  TZ: Asia/Shanghai
    volumes:
      - /etc/localtime:/etc/localtime:ro 	# 同步宿主机时钟与容器的时钟,ro(read only),表示只读。
      - ./mysql/log:/var/log/mysql # 映射日志目录,宿主机:容器
      - ./mysql/data:/var/lib/mysql # 映射数据目录,宿主机:容器
      - ./mysql/config/my.cnf:/etc/mysql/conf.d # 映射配置目录,宿主机:容器

3、创建自定义的mysql配置文件(可选)

进入config目录中创建一个my.cnf的文件,将下述语句粘贴进该文件中

[mysqld]
# MySQL启动用户
user=mysql

# MySQL端口
port = 3306

# 创建新表时将使用的默认存储引擎                     
default-storage-engine=INNODB 

# 设置mysql服务端默认字符集
character-set-server=utf8mb4 

# pid文件所在目录  
#pid-file = /var/run/mysqld/mysqld.pid 
pid-file = /var/lib/mysql/mysql.pid 

# 用于本地连接的socket文件目录
#socket = /var/run/mysqld/mysqld.sock 
socket = /var/lib/mysql/mysql.sock 

# 数据文件存放的目录
datadir = /var/lib/mysql 

# 错误日志,用来记录当MySQL启动、停止或运行时发生的错误信息,默认已开启
log-error=/var/log/mysql/error.log	

# 通用查询日志,用来记录MySQL的所有连接和语句,默认是关闭的
general_log=ON
general_log_file=/var/log/mysql/general.log 

# 慢查询日志,用来记录所有执行时间超过long_query_time秒的语句,可以用来查找查询执行时间长的语句,以便于优化,默认是关闭的
slow_query_log=ON
slow_query_log_file=/var/log/mysql/slow_query.log

#设置超过5秒执行的语句被记录,缺省时为10秒
long_query_time=5												

# Disabling symbolic-links is recommended to prevent assorted security risks

#禁用符号链接以防止各种安全风险
symbolic-links=0

# 定义sql模式
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION 

# 是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names = 1
max_allowed_packet=16M

# 允许最大连接数
max_connections=1000

# 缓存池大小
# innodb_buffer_pool_size = 12G

# 缓存池实例个数
# innodb_buffer_pool_instances = 10

# TIMESTAMP如果没有显示声明NOT NULL,允许NULL值
explicit_defaults_for_timestamp = true

[mysql]
# 设置默认字符集
default-character-set=utf8mb4

[client]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4

4、使用docker-compose启动mysql

docker-compose up -d

5、进入容器进行测试

docker-compose exec mysql /bin/bash	

使用docker-compose部署Redis缓存数据库

1、创建redis目录,并进入

下述命令将创建redis目录,并且redis目录里面有三个文件夹,分别是config(配置文件),data(数据),logs(日志)

mkdir -p redis/{config,data,logs} && cd redis

2、创建日志文件

创建一个名为redis的日志文件

touch redis/logs/redis.log

3、进入配置文件夹中,创建配置文件

touch config/redis.conf

将下面配置内容粘贴进新创建的配置文件中

#redis.conf
# 关闭保护模式,允许远程连接
protected-mode no

# 设置 TCP 连接队列的最大长度。当有多个客户端同时尝试连接到 Redis 时,这个值决定了可以排队等待的连接数。
tcp-backlog 511

# 设置 TCP keepalive 选项,单位为秒。如果设置为非零值,Redis 会定期发送 TCP keepalive 包以检测空闲连接是否仍然有效。
tcp-keepalive 300

# 让 Redis 在后台运行。设置为 yes 后,Redis 将作为守护进程运行。
daemonize yes

# 指定 Redis 进程 ID (PID) 文件的位置。
pidfile "/var/run/redis_6379.pid"

# 设置日志级别。可选值包括 debug, verbose, notice, warning。日志级别越高,记录的信息越少。
loglevel notice

# 指定日志文件的位置和名称。
logfile "6379.log"

# 设置数据库的数量。Redis 默认支持 16 个逻辑数据库(编号从 0 到 14)。
databases 16

# 设置进程标题模板,用于显示在系统监控工具中。
proc-title-template "{title} {listen-addr} {server-mode}"

# 如果 BGSAVE(后台保存)操作出错,停止接受写请求。
stop-writes-on-bgsave-error yes

# 启用 RDB 文件压缩。
rdbcompression yes

# 启用 RDB 文件校验和。
rdbchecksum yes

# 指定 RDB 文件的名称。
dbfilename "dump.rdb"

# 禁用同步删除临时 RDB 文件。
rdb-del-sync-files no

# 允许副本提供过期数据。
replica-serve-stale-data yes

# 设置副本为只读模式。
replica-read-only yes

# 禁用无盘复制同步。
repl-diskless-sync no

# 设置无盘复制同步延迟时间,单位为秒。
repl-diskless-sync-delay 5

# 禁用 Nagle 算法,减少网络延迟。
repl-disable-tcp-nodelay no

# 设置副本优先级。数值越大,优先级越高。
replica-priority 100

# 设置 ACL 日志的最大长度。
acllog-max-len 128

# 设置访问密码,用于保护 Redis 实例。
requirepass "123456789"

# 禁用懒惰删除机制中的懒惰逐出策略。
lazyfree-lazy-eviction no

# 禁用懒惰删除机制中的懒惰过期策略。
lazyfree-lazy-expire no

# 禁用懒惰删除机制中的懒惰服务器删除策略。
lazyfree-lazy-server-del no

# 禁用懒惰删除机制中的懒惰刷新策略。
replica-lazy-flush no

# 禁用懒惰删除机制中的懒惰用户删除策略。
lazyfree-lazy-user-del no

# 禁用懒惰删除机制中的懒惰用户刷新策略。
lazyfree-lazy-user-flush no

# 禁用透明大页内存管理。
oom-score-adj no

# 设置 OOM(Out Of Memory)评分调整值。
oom-score-adj-values 0 200 800

# 禁用透明大页内存管理。
disable-thp yes

# 启用 AOF(Append Only File)持久化方式。
appendonly yes

# 指定 AOF 文件的名称。
appendfilename "appendonly.aof"

# 设置 AOF 文件的同步频率。可选值包括 always, everysec, no。
appendfsync everysec

# 在重写期间禁用 AOF 文件同步。
no-appendfsync-on-rewrite no

# 设置 AOF 文件自动重写的触发条件,即当前 AOF 文件大小与上一次重写后 AOF 文件大小的比率。
auto-aof-rewrite-percentage 100

# 设置 AOF 文件自动重写的最小大小。
auto-aof-rewrite-min-size 64mb

# 如果 AOF 文件被截断,则加载 AOF 文件时忽略错误。
aof-load-truncated yes

# 使用 RDB 预amble 来验证 AOF 文件的完整性。
aof-use-rdb-preamble yes

# 设置 Lua 脚本执行的最大时间,单位为毫秒。
lua-time-limit 5000

# 设置慢查询日志的最大长度。
slowlog-max-len 128

# 设置延迟监控的阈值,单位为微秒。
latency-monitor-threshold 0

# 设置键空间通知事件的类型。空字符串表示不发送任何通知。
notify-keyspace-events ""

# 设置哈希表的最大压缩列表长度。
hash-max-ziplist-entries 512

# 设置哈希表的最大压缩列表值大小,单位为字节。
hash-max-ziplist-value 64

# 设置列表的最大压缩列表长度。负值表示禁用压缩列表。
list-max-ziplist-size -2

# 设置列表的压缩深度。
list-compress-depth 0

# 设置整数集合的最大元素数量。
set-max-intset-entries 512

# 设置有序集合的最大压缩列表长度。
zset-max-ziplist-entries 128

# 设置有序集合的最大压缩列表值大小,单位为字节。
zset-max-ziplist-value 64

# 设置 HLL(HyperLogLog)稀疏最大字节数。
hll-sparse-max-bytes 3000

# 设置流节点的最大字节数。
stream-node-max-bytes 4kb

# 设置流节点的最大条目数。
stream-node-max-entries 100

# 启用动态调整 hz(Hertz)参数。
activerehashing yes

# 设置客户端输出缓冲区限制,格式为 normal <硬限制> <软限制> <软时间限制>,replica <硬限制> <软限制> <软时间限制>,pubsub <硬限制> <软限制> <软时间限制>。
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60

# 设置服务器每秒处理的命令数量。默认值为 10。
hz 10

# 启用动态调整 hz(Hertz)参数。
dynamic-hz yes

# 启用增量式 AOF 文件重写。
aof-rewrite-incremental-fsync yes

# 启用增量式 RDB 文件保存。
rdb-save-incremental-fsync yes

# 启用 jemalloc 后台线程。
jemalloc-bg-thread yes

# 设置 RDB 快照保存规则,格式为 save <seconds> <changes>。例如,以下配置表示在每秒钟至少有1次修改时进行快照保存,每300秒至少有10000次修改时进行快照保存,每60秒至少有100次修改时进行快照保存。
save 3600 1
save 300 100
save 60 10000

4、编写docker-compose.yml文件

version: '3'
services:
  redis: # 服务名称
    image: "redis:latest" # redis镜像版本
    container_name: redis # 容器名称
    restart: always # 容器开机自启
    privileged: true # 获取宿主机root权限
    ports:
      - 6379:6379 # 指定宿主机端口与容器端口映射关系,宿主机:容器
    volumes:
	  # 分别是第一步骤中创建的三个文件夹的路径
      - ./redis/config/redis.conf:/etc/redis/redis.conf:rw # 映射配置文件目录,宿主机:容器
      - ./redis/data:/data:rw # 映射数据目录,宿主机:容器
      - ./redis/logs:/logs:rw # 映射日志目录,宿主机:容器
    command:
      # 执行的命令
      redis-server ./redis/config/redis.conf # 指定配置文件启动redis-server进程

5、使用docker-compose启动redis

docker-compose up -d

使用redis客户端进行连接测试,密码在配置文件中设置为123456789

一键部署Mysql、Redis、NginxProxyManager

1、创建目录,后续的文件将会在这个目录中

mkdir 目录名	 && cd 目录名

2、创建Mysql和Redis的配置文件

2.1 创建Mysql配置文件

mkdir ./mysql/config && touch ./mysql/config/my.cnf

2.2 编写my.cnf配置文件

[mysqld]
# MySQL启动用户
user=mysql

# MySQL端口
port = 3306

# 创建新表时将使用的默认存储引擎                     
default-storage-engine=INNODB 

# 设置mysql服务端默认字符集
character-set-server=utf8mb4 

# pid文件所在目录  
#pid-file = /var/run/mysqld/mysqld.pid 
pid-file = /var/lib/mysql/mysql.pid 

# 用于本地连接的socket文件目录
#socket = /var/run/mysqld/mysqld.sock 
socket = /var/lib/mysql/mysql.sock 

# 数据文件存放的目录
datadir = /var/lib/mysql 

# 错误日志,用来记录当MySQL启动、停止或运行时发生的错误信息,默认已开启
log-error=/var/log/mysql/error.log	

# 通用查询日志,用来记录MySQL的所有连接和语句,默认是关闭的
general_log=ON
general_log_file=/var/log/mysql/general.log 

# 慢查询日志,用来记录所有执行时间超过long_query_time秒的语句,可以用来查找查询执行时间长的语句,以便于优化,默认是关闭的
slow_query_log=ON
slow_query_log_file=/var/log/mysql/slow_query.log

#设置超过5秒执行的语句被记录,缺省时为10秒
long_query_time=5												

# Disabling symbolic-links is recommended to prevent assorted security risks

#禁用符号链接以防止各种安全风险
symbolic-links=0

# 定义sql模式
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION 

# 是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names = 1
max_allowed_packet=16M

# 允许最大连接数
max_connections=1000

# 缓存池大小
# innodb_buffer_pool_size = 12G

# 缓存池实例个数
# innodb_buffer_pool_instances = 10

# TIMESTAMP如果没有显示声明NOT NULL,允许NULL值
explicit_defaults_for_timestamp = true

[mysql]
# 设置默认字符集
default-character-set=utf8mb4

[client]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4

2.3创建Redis缓存数据库配置文件

mkdir ./redis/config && touch ./redis/config/redis.cnf

2.4编写Redis配置文件

#redis.conf
# 关闭保护模式,允许远程连接
protected-mode no

# 设置 TCP 连接队列的最大长度。当有多个客户端同时尝试连接到 Redis 时,这个值决定了可以排队等待的连接数。
tcp-backlog 511

# 设置 TCP keepalive 选项,单位为秒。如果设置为非零值,Redis 会定期发送 TCP keepalive 包以检测空闲连接是否仍然有效。
tcp-keepalive 300

# 让 Redis 在后台运行。设置为 yes 后,Redis 将作为守护进程运行。
daemonize yes

# 指定 Redis 进程 ID (PID) 文件的位置。
pidfile "/var/run/redis_6379.pid"

# 设置日志级别。可选值包括 debug, verbose, notice, warning。日志级别越高,记录的信息越少。
loglevel notice

# 指定日志文件的位置和名称。
logfile "6379.log"

# 设置数据库的数量。Redis 默认支持 16 个逻辑数据库(编号从 0 到 14)。
databases 16

# 设置进程标题模板,用于显示在系统监控工具中。
proc-title-template "{title} {listen-addr} {server-mode}"

# 如果 BGSAVE(后台保存)操作出错,停止接受写请求。
stop-writes-on-bgsave-error yes

# 启用 RDB 文件压缩。
rdbcompression yes

# 启用 RDB 文件校验和。
rdbchecksum yes

# 指定 RDB 文件的名称。
dbfilename "dump.rdb"

# 禁用同步删除临时 RDB 文件。
rdb-del-sync-files no

# 允许副本提供过期数据。
replica-serve-stale-data yes

# 设置副本为只读模式。
replica-read-only yes

# 禁用无盘复制同步。
repl-diskless-sync no

# 设置无盘复制同步延迟时间,单位为秒。
repl-diskless-sync-delay 5

# 禁用 Nagle 算法,减少网络延迟。
repl-disable-tcp-nodelay no

# 设置副本优先级。数值越大,优先级越高。
replica-priority 100

# 设置 ACL 日志的最大长度。
acllog-max-len 128

# 设置访问密码,用于保护 Redis 实例。
requirepass "123456789"

# 禁用懒惰删除机制中的懒惰逐出策略。
lazyfree-lazy-eviction no

# 禁用懒惰删除机制中的懒惰过期策略。
lazyfree-lazy-expire no

# 禁用懒惰删除机制中的懒惰服务器删除策略。
lazyfree-lazy-server-del no

# 禁用懒惰删除机制中的懒惰刷新策略。
replica-lazy-flush no

# 禁用懒惰删除机制中的懒惰用户删除策略。
lazyfree-lazy-user-del no

# 禁用懒惰删除机制中的懒惰用户刷新策略。
lazyfree-lazy-user-flush no

# 禁用透明大页内存管理。
oom-score-adj no

# 设置 OOM(Out Of Memory)评分调整值。
oom-score-adj-values 0 200 800

# 禁用透明大页内存管理。
disable-thp yes

# 启用 AOF(Append Only File)持久化方式。
appendonly yes

# 指定 AOF 文件的名称。
appendfilename "appendonly.aof"

# 设置 AOF 文件的同步频率。可选值包括 always, everysec, no。
appendfsync everysec

# 在重写期间禁用 AOF 文件同步。
no-appendfsync-on-rewrite no

# 设置 AOF 文件自动重写的触发条件,即当前 AOF 文件大小与上一次重写后 AOF 文件大小的比率。
auto-aof-rewrite-percentage 100

# 设置 AOF 文件自动重写的最小大小。
auto-aof-rewrite-min-size 64mb

# 如果 AOF 文件被截断,则加载 AOF 文件时忽略错误。
aof-load-truncated yes

# 使用 RDB 预amble 来验证 AOF 文件的完整性。
aof-use-rdb-preamble yes

# 设置 Lua 脚本执行的最大时间,单位为毫秒。
lua-time-limit 5000

# 设置慢查询日志的最大长度。
slowlog-max-len 128

# 设置延迟监控的阈值,单位为微秒。
latency-monitor-threshold 0

# 设置键空间通知事件的类型。空字符串表示不发送任何通知。
notify-keyspace-events ""

# 设置哈希表的最大压缩列表长度。
hash-max-ziplist-entries 512

# 设置哈希表的最大压缩列表值大小,单位为字节。
hash-max-ziplist-value 64

# 设置列表的最大压缩列表长度。负值表示禁用压缩列表。
list-max-ziplist-size -2

# 设置列表的压缩深度。
list-compress-depth 0

# 设置整数集合的最大元素数量。
set-max-intset-entries 512

# 设置有序集合的最大压缩列表长度。
zset-max-ziplist-entries 128

# 设置有序集合的最大压缩列表值大小,单位为字节。
zset-max-ziplist-value 64

# 设置 HLL(HyperLogLog)稀疏最大字节数。
hll-sparse-max-bytes 3000

# 设置流节点的最大字节数。
stream-node-max-bytes 4kb

# 设置流节点的最大条目数。
stream-node-max-entries 100

# 启用动态调整 hz(Hertz)参数。
activerehashing yes

# 设置客户端输出缓冲区限制,格式为 normal <硬限制> <软限制> <软时间限制>,replica <硬限制> <软限制> <软时间限制>,pubsub <硬限制> <软限制> <软时间限制>。
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60

# 设置服务器每秒处理的命令数量。默认值为 10。
hz 10

# 启用动态调整 hz(Hertz)参数。
dynamic-hz yes

# 启用增量式 AOF 文件重写。
aof-rewrite-incremental-fsync yes

# 启用增量式 RDB 文件保存。
rdb-save-incremental-fsync yes

# 启用 jemalloc 后台线程。
jemalloc-bg-thread yes

# 设置 RDB 快照保存规则,格式为 save <seconds> <changes>。例如,以下配置表示在每秒钟至少有1次修改时进行快照保存,每300秒至少有10000次修改时进行快照保存,每60秒至少有100次修改时进行快照保存。
save 3600 1
save 300 100
save 60 10000

3、创建docker-compose.yml文件

version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'              # 不建议修改端口
      - '81:81'              # 可以把冒号左边的 81 端口修改成你服务器上没有被占用的端口
      - '443:443'            # 不建议修改端口
    volumes:
      - ./nginx/data:/data         # 点号表示当前文件夹,冒号左边的意思是在当前文件夹下创建一个 data 目录,用于存放数据,如果不存在的话,会自动创建
      - ./nginx/letsencrypt:/etc/letsencrypt  # 点号表示当前文件夹,冒号左边的意思是在当前文件夹下创建一个 letsencrypt 目录,用于存放证书,如果不存在的话,会自动创建

  mysql: 							# 名称
    image: mysql:latest 			# mysql镜像版本,也可以mysql:latest直接最新版本
    container_name: mysql	 		# 容器名称
    ports:
      - 3306:3306 					# 指定宿主机端口与容器端口映射关系,宿主机:容器  
    restart: always 				# 表示容器随docker启动自启  
    environment:
      LANG: en_US.UTF-8 			# 设置语言
      MYSQL_ROOT_PASSWORD: 123456 	# root用户密码
	  TZ: Asia/Shanghai
    volumes:
      - /etc/localtime:/etc/localtime:ro 	# 同步宿主机时钟与容器的时钟,ro(read only),表示只读。
      - ./mysql/log:/var/log/mysql # 映射日志目录,宿主机:容器
      - ./mysql/data:/var/lib/mysql # 映射数据目录,宿主机:容器
      - ./mysql/config/my.cnf:/etc/mysql/conf.d # 映射配置目录,宿主机:容器

  redis: # 服务名称
    image: "redis:latest" # redis镜像版本
    container_name: redis # 容器名称
    restart: always # 容器开机自启
    privileged: true # 获取宿主机root权限
    ports:
      - 6379:6379 # 指定宿主机端口与容器端口映射关系,宿主机:容器
    volumes:
	  # 分别是第一步骤中创建的三个文件夹的路径
      - ./redis/config/redis.conf:/etc/redis/redis.conf:rw # 映射配置文件目录,宿主机:容器
      - ./redis/data:/data:rw # 映射数据目录,宿主机:容器
      - ./redis/logs:/logs:rw # 映射日志目录,宿主机:容器
    command:
      # 执行的命令
      redis-server ./redis/config/redis.conf # 指定配置文件启动redis-server进程