Docker安装常用软件
Docker安装MySQL
简易安装
拉取mysql5.7镜像
docker pull mysql:5.7
生成容器实例
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
- -e:设置环境变量
存在问题
- 中文乱码
- 容器被删掉之后数据就没了
造成原因:docker默认的字符集存在问题,可以在mysql中使用以下命令查看数据库字符集,返回的字符集中,character_set_database、character_set_server等都为
latin1
字符集,所以会报错show variables like 'character%';
生产环境版安装
拉取mysql5.7镜像
docker pull mysql:5.7
生成容器实例
docker run -d -p 3306:3306 \ --privileged=true \ -v /app/mysql/log:/var/log/mysql \ # 映射数据卷,进行数据备份 -v /app/mysql/data:/var/lib/mysql \ -v /app/mysql/conf:/etc/mysql/conf.d \ -e MYSQL_ROOT_PASSWORD=root \ --name mysql \ mysql:5.7
- -d:守护进程
- -v:映射数据卷(可以同时映射多个)
- -e:设置环境变量
在/app/mysql/conf目录下新建
my.cnf
,加入字符集规则[client] default_character_set=utf8 [mysqld] collation_server = utf8_general_ci character_set_server = utf8
重启容器
docker restart mysql
- 此时便解决了中文乱码(中文插入报错)问题,同时数据被备份到数据卷中,容器被删除只需要重新生成容器实例即可
Docker安装Redis
拉取docker镜像
docker pull redis:6.0.8
- 在宿主机创建目录
/app/redis
拷贝Redis配置文件redis.conf模板到
/app/redis/
下,主要修改以下几项配置# 开启密码验证(可选) requirepass 123 # 允许redis外地连接,需要注释掉绑定的IP # bind 127.0.0.1 # 关闭保护模式(可选) protected-mode no # 注释掉daemonize yes,或者配置成 daemonize no。因为该配置和 docker run中的 -d 参数冲突,会导致容器一直启动失败 daemonize no # 开启redis数据持久化, (可选) appendonly yes
启动docker容器
docker run -d -p 6379:6379 --name redis --privileged=true \ -v /app/redis/redis.conf:/etc/redis/redis.conf \ -v /app/redis/data:/data \ redis:6.0.8 \ redis-server /etc/redis/redis.conf
- 映射redis配置文件和数据目录
- 指令
redis-server /etc/redis/redis.conf
:启动redis时使用映射到docker内部配置文件