39、SpringBoot微服务打包Docker镜像_哔哩哔哩_bilibili
1.数据卷:容器的持久化和同步操作!容器间也可以数据共享。
假如使用docker安装mysql,再mysql中存储数据,如果删除容器,那么数据也会随之删除。
所以需要数据卷来将mysql中的数据也存在本地的linux系统中,做持久化操作。
所以需要容器之间可以有一个数据共享技术。Docker容器中的数据同步到本地,这就是所谓的卷技术。
方式一: 直接使用命令挂载 -v
容器可与宿主机之间相互映射,互读互写,可多个目录挂载
--privileged=true 是权限
docker run -it --privileged=true -v /tmp/host_data:/tem/docker_data --name=version1.0 ubuntu
2.MYSQL 安装 实战
下载mysql:
[root@iZ2ze2lmaapzzdwfu3j33hZ ceshi]# docker pull mysql:5.7
相关命令:
-d 后台启动
-v 数据卷挂载 可以同时挂载多个目录
-p 本机和容器映射端口
-e 环境配置
--name 别名
运行命令:
docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
启动成功后,使用navcat链接docker容器内的mysql。
3.具名和匿名挂载
#匿名挂载
-v 容器内路径
-P 随机端口
# docker run -d -P --name nginx01 -v /ect/nginx nginx
-- 安装nginx -v的时候只指定了容器内的路径,没有指定容器外的路径所以叫匿名挂载 -v 的时候带名字的就是具名挂载
#查看所有volume(卷)的情况
[root@iZ2ze2lmaapzzdwfu3j33hZ data]# docker volume ls
#数据都是这样没有名字的 都是一个路径
local 8ea288e714be61514c112ab8e8137719e01cdddc24c619912bd29870158d1065
local c7615be279ef4fe65085a4195769fbe7b659ac048f999d7be39bdfade7ba7d4f
#具名挂载
#[root@iZ2ze2lmaapzzdwfu3j33hZ data]# docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx
local 8ea288e714be61514c112ab8e8137719e01cdddc24c619912bd29870158d1065
local c7615be279ef4fe65085a4195769fbe7b659ac048f999d7be39bdfade7ba7d4f
local juming-nginx
挂载的卷的都放在这个位置,具体位置如图
我们通过具名挂载可以方便找到我们的一个卷,大多数都是使用具名挂载,不推荐使用匿名挂载
#如何确定是具名挂载还是匿名挂载 还是指定路径挂载
-v 容器内路径 #匿名挂载
-v 卷名:容器内路径 # 具名挂载
-v /宿主机路径:容器内路径 # 指定路径挂载
拓展:
#通过 -v 容器内路径, ro rw 改变读写权限
ro readonly 只读
rw readwrite 读写
#一旦设置了ro rw ,容器就对我们的权限有了限定
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就说明这个路径只能通过宿主机进行操作,容器内部是无法操作的