【docker】安装MySQL

Source

实战:安装MySQL

思考:MySQL的数据持久化的问题

#获取镜像

docker pull mysql:5.7

#运行容器,需要做数据挂载

#安装启动MySQL,需要配置密码(docker Hub)

#官方测试

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

#启动

-d 后台运行

-p 端口映射

-v 卷挂载

-e 环境配置

--name 容器名字

docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql:5.7

#启动成功之后,我们在本地使用sqlyog来接测试一下

#sqlyog-连接到服务器的3310 ---3310和容器内的3306映射,这个时候我们就可以连接上了!

#在本地测试创建一个数据库,查看一下我们映射的路径是否OK

假设我们将容器删除

发现我们挂载到本地的数据库依旧没有丢失,这就实现了容器数据持久化功能!!!

#匿名挂载

-v 容器内路径

docker run -d -P --name nginx01 -v /ect/nginx nginx

#查看所有volume(卷)的情况

docker volume ls

local 9f3824568faal78afcce54db0be99d4ddd6870bcece72d2b7ed061

#这里发现,这种就是匿名挂载,我们在-v的时候只写了容器内的路径,没有写容器外的路径

#具名挂载

#通过-v 卷名:容器内路径

#查看一下这个卷

所有的docker容器内的卷,没有指定目录的情况下都是在'/var/lib/docker/volumes/xxxx/_data'

我们通过具名挂载可以方便的找到我们的一个卷,大多数情况在使用的具名挂载!

那么,我们如何确定是具名挂载还是匿名挂载,还是指定路径挂载?

-v 容器内路径 #匿名挂载

-v 卷名:容器内路径 #具名挂载

-v /宿主机路径::容器内路径 #指定路径挂载

拓展:

#通过 -v 容器内路径,ro rw 改变读写权限

ro readonly #只读

rw readwrite #可读可写

#一旦这个设置了容器权限,容器对我们挂载出来的内容就有限定了

docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginx

docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:rw nginx

#ro 只要看到ro就说明这个路径只能通过宿主机来操作,容器内部是无法操作的