一、docker安装
https://www.jianshu.com/p/abbcbe004290
设置镜像加速,不然docker hub中的镜像下载可能会慢
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
二、搭建mysql
1、下载镜像文件
docker pull mysql:5.7
2、创建实例并启动
docker run -p 3306:3306 --name mysql -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
参数说明
-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口
-v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂载到主机
-v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
-v /mydata/mysql/data:/var/lib/mysql/:将配置文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=root:初始化 root 用户的密码
3、MySQL 配置
vi /mydata/mysql/conf/my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
4、解决MySQL连接慢的问题
在配置文件中加入如下,并重启 mysql
[mysqld]
skip-name-resolve
解释:
skip-name-resolve:跳过域名解析
5、连接mysql
docker exec -it mysql mysql -uroot -proot
6、设置root远程访问
use mysql
grant all privileges on . to ‘root’@’%’ identified by ‘root’ with grant option;
flush privileges;
7、进入容器文件系统
docker exec -it mysql /bin/bash
三、搭建redis
1、下载镜像文件
docker pull redis
2、创建实例并启动
先在宿主机新建redis.conf是因为需要挂载,但宿主机默认没有该配置文件
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf
docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf
3、配置持久化
vim /mydata/redis/conf/redis.conf
appendonly yes
配置AOF持久化
4、使用redis镜像执行redis-cli命令连接
docker exec -it redis redis-cli
四、搭建nginx
1、随便启动一个nginx实例,只是为了复制出配置
docker run -p 80:80 --name nginx -d nginx:1.10
2、将容器内的配置文件拷贝到当前目录
docker container cp nginx:/etc/nginx .
随后停止并删除Nginx容器
docker stop nginx
docker rm nginx
调整文件夹
- 修改文件夹名称:
mv nginx conf
- 将这个conf移到/mydata/nginx下
3、
五、设置容器自启动
docker update mysql --restart=always
X、可能遇到的问题
1、连不上外网下载不了镜像
报错 Error response from daemon: Get https://registry-1.docker.io/v2/
解决方法:Error response from daemon: Get https://registry-1.docker.io/v2/