docker安装与启动MYSQL

docker安装与启动MYSQL

1 docker安装MYSQL

到官网上查找想要的MYSQL镜像

图片.png
docker pull mysql:5.7
图片.png

可以看到已经有MySQL5.7这个镜像了

2 启动MYSQL镜像

2.1 启动

docker run -v /d_data/mysqldb/conf:/etc/mysql/conf.d -v /d_data/mysqldb/logs:/logs -v /d_data/mysqldb/data:/var/lib/mysql -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD='root' --name mysql mysql:5.7

解释

-v 映射数据卷 其中/etc/mysql/conf.d是docker mysql存储配置文件的地方, /logs是docker mysql存储日志的地方, /var/lib/mysql是数据库存储数据库信息包括数据库表,数据库、视图之类的数据的地方

-d 后台运行

-p 做端口映射,因为我的虚拟机还要另外一个mysql所以要用3307端口来映射。

-e 启动时执行的命令,设置root的密码。要启动数据库必须给root一个密码,随机密码也行。如果没有密码是无法启动mysql的。

连接

图片.png

地址填写虚拟机的地址

2.2 配置

另外,要给mysql添加其他的配置,例如设置字符集否则默认字符集是拉丁文的。(可以从网上拷贝一份配置文件)
到对应的文件夹下面创建,因为我的是在


图片.png
图片.png

图片.png

重启


图片.png

图片.png

3 数据卷相关内容

3.1 什么是容器数据卷?

数据卷存在于宿主机中,独立于容器,和容器的生命周期是分离的 数据卷可以目录也可以是文件 容器可以利用数据卷与宿主机进行数据共享,实现了容器间的数据共享和交换

3.2 容器数据卷的特点

1、容器启动时初始化数据卷,如果容器使用的镜像包含了数据,这些数据也会拷贝到数据卷中 2、对 数据卷 的修改会立马生效 3、数据卷的变化不会影响镜像的更新 4、数据卷是宿主机中的一个目录

3.3 数据卷的运用场景

1、在多个运行容器之间共享数据。如果您没有明确创建它,则会在第一次将其装入容器时创建卷。当该容器停止或被移除时,该卷仍然存在。多个容器可以同时安装相同的卷,无论是读写还是只读。仅当您明确删除卷时才会删除卷

2、当您想要将容器的数据存储在远程主机或云提供商上而不是本地时

3、当您需要备份,还原或将数据从一台Docker主机迁移到另一台时,卷是更好的选择。您可以停止容器,然后备份卷的目录

3.4 数据卷的相关命令

3.4.1 创建容器数据卷
docker volume create 数据卷名称

注意

容器卷默认保存在宿主机的/var/lib/docker/volumes路径下

3.4.2 创建容器时指定数据卷
docker run -it 
    --mount source=数据卷名称,target=容器中的挂载路径,type=volume 
    --name 容器别名 镜像名称

参数介绍:

source 指定宿主机中数据卷的名称 target 指定容器中对应的挂载路径 type 指定为数据卷的方式挂载,还可以选择bind、tmpfs,默认为volume

注意:

1、如果挂载一个空的数据卷到容器中的一个非空目录中,那么这个目录下的文件会被复制到数据卷中 2、如果挂载一个非空的数据卷到容器中的一个目录中,那么容器中的目录中会显示数据卷中的数据。如果原来容器中的目录中有数据,那么这些原始数据会被隐藏掉

3.4.3 直接在创建容器时指定数据卷
docker run  ... [-v 宿主机数据卷:docker容器路径:ro] []...

注意:

1、通过这种方式可以任意指定宿主机的数据卷位置 2、如果随意指定数据卷的位置,容器中对应路径的文件就不会复制到宿主机的数据卷中,而是全部被清空 3、:ro表示以只读的方式挂载容器卷,不写再表示以读写的方式挂载 4、可以通过-v连续设置多个容器卷路径

总结:

数据卷未显示声明路径(默认在/var/lib/docker/volumes下)

1、数据卷为空,对应的容器路径有数据,则容器中的数据直接同步到数据卷中 2、数据卷有数据,对应的容器路径不存在,则启动容器时,自动创建该容器路径,并且将数据卷的数据同步到该路径下 3、数据卷有数据,对应的容器路径也有数据(数据不同),会把数据卷中的数据同步到容器路径中,容器路径中的文件会被隐藏(宿主机 覆盖 容器)

如果宿主机的数据卷为空,容器覆盖宿主机,如果数据卷不为空,则宿主机覆盖容器

数据卷声明指定路径

1、数据卷为空,对应的容器路径有数据,则直接将容器路径中的数据隐藏 2、数据卷有数据,对应的容器路径不存在,则启动容器时,自动创建该容器路径,并且将数据卷的数据同步到该路径下 3、数据卷有数据,对应的容器路径也有数据(数据不同),会把数据卷中的数据同步到容器路径中,容器路径中的文件会被隐藏(宿主机 覆盖 容器)

无论情况如何,永远是宿主机 覆盖 容器路径

数据卷是文件的情况

1、数据卷指定一个文件,对应的容器文件不存在,直接将数据卷文件覆盖到容器中 2、数据卷指定的文件不存在,容器的文件存在,启动容器会报错

如果需要绑定文件,则必须保证宿主机的数据卷中文件必须存在

你可能感兴趣的:(docker安装与启动MYSQL)