1、docker下载MySQL
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
select host,user from user; # 查询当前状态
update user set host = '%' where user = 'root'; # 修改访问限制为%
flush privileges; # 重新载入授权表,刷新权限缓存
方法二:grant授权方式
flush privileges; # 重新载入授权表,刷新权限缓存
ALL PRIVILEGES:当前用户的所有权限
ON:介词
*.*:当前用户对所有数据库和表的相应操作权限
TO:介词
‘root’@’%’:权限赋给root用户,所有ip都能连接
IDENTIFIED BY ‘123456’:连接时输入密码,密码为123456
WITH GRANT OPTION:允许级联赋权
grant all privileges on *.* to root@'%' with grant option;
- docker run 是启动命令,没有镜像则会先下载;
- --name redis 容器取名,不加该参数自动生成随机字符串;
- -p 6379:6379 端口映射,注意docker里面冒号前面都是外部的,如端口,挂载;
- -v xxx:xxx 文件挂载,这里配置了2个挂载,一个是配置文件,一个是数据文件夹。这样即使容器销毁也会保留配置和数据,重启即可恢复,数据文件需要开启持久化才有;
- -d 表示后台启动,反之为前台启动,退出控制台将结束程序;
- redis 紧跟的redis表示镜像名称,一般启动会使用redis:6.2.7类似方式,带上版本号,不带表示用lastest,即最新的;
- redis-server /etc/redis/redis.conf 这句是启动命令,启动镜像后执行的命令;
-restart=always:容器Docker的时候,自动重启Redis容器
-p 6334:6379:端口映射,第一个端口是宿主机向外部暴露的端口,第二是容器开放的端口
-v /docker/redis/conf/redis.conf:/etc/redis/redis.conf:映射配置文件
-v /docker/redis/data:/data:映射数据目录
–name redis:容器的名字
redis-server /etc/redis/redis.conf:以指定配置文件的方式启动redis-serer进程
–appendonly yes:开启数据持久化
docker run -p 6379:6379 --name redis --restart=always \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /mydata/redis/data:/data \
-d redis redis-server /etc/redis/redis.conf \
--requirepass "123" --appendonly yes
(* 注!--requirepass "123" --appendonly yes 必须跟在-d redis redis-server /etc/redis/redis.conf \ 之后)
3、docker安装nginx
拉取镜像
docker pull nginx
"PortBindings":{
"80/tcp":[
{
"HostIp":"",
"HostPort":"80"
}
],
"8088/tcp":[
{
"HostIp":"",
"HostPort":"8088"
}
]
}
修改 config.v2.json 文件,找到如下配置,可以添加想要开放的端口
"ExposedPorts":{
"80/tcp":{
},
"8088/tcp":{
}
}
注:并不需要修改Ports,只有在你没有stop容器时,Ports才会有值,如果关闭了容器,就是null。当然如果你修改了也无所谓,因为重启容器后,就会被刷新。
最后:
重启docker并且重启nginx
(另附:在启动容器的时候若是已知需要多映射几个端口时,可以多使用 -p 80:80 -p 8090:8090 ... 来增加需要映射的端口,
docker run创建Docker容器时,也可以用 --net 选项指定容器的网络模式 :
host模式:使用 --net=host 指定。
none模式:使用 --net=none 指定。
bridge模式:使用 --net=bridge 指定,默认设置。
container模式:使用 --net=container:NAME_or_ID 指定
)