docker 文件持久化方式
docker 的数据挂载分为三种,volume, bind mount 和 tmpfs,三种方式各有优缺点
docker 文件持久化方式
docker 的数据挂载分为三种,volume, bind mount 和 tmpfs,三种方式各有优缺点,以下分别进行说明
volume
是由 docker 默认及推荐的挂载方式,volume 由 docker 直接管理,同一个 volume 可以共享给多个容器使用,volume 和容器的生命周期完全独立,容器删除时 volume 仍然存在,除非主动删除 volume,volume 的数据与 docker 中挂载的目录*同步更新
volume 基本操作指令
# 查看所有 volume
docker volume ls
# 删除指定 volume
docker volume rm [volume name]
# 查看 volume 详细
docker volume inspect [volume name]
# docker 挂在 volume,-v 指令表示挂载,: 前为指定的 volume 名字,后面为 volume 数据备份文件路径
docker run -d -v mysql:/test/mysql/data --name mysql mysql
查看所有 volume
查看所有 volume查看 volume 详情
image挂载 volume 的方式运行 docker
image测试 volume 方式挂载文件方式是否生效
image验证 volume 方式挂载文件进行数据持久化是否生效
image新的容器以指定 volume 运行
image
可以发现,采用 volume 方式时,删除容器后宿主机挂载的 volume 还存在,并且已经映射过来的文件并不会被一起被删除
bind mount
是直接将宿主机文件系统上的文件路径映射到容器中,两边双向同步,两方无论哪一方有修改,另一方都会同步内容。优点是可以直接访问,也可以被别的程序使用,比如我们新建一个配置文件,我们就可以把这个文件使用 bind mount 的方式挂在到依赖他的应用的 docker 容器中,这样我们直接在宿主机上改动配置后,docker 里应用所使用的配置也会同时更新;缺点是因为任何文件都能绑定上去,可能带来一些安全问题,比如绑定了宿主机的系统文件;
bing mount 基本操作指令
bing mount 使用方式同 volume 基本相同,不同点在于执行
dockers run -v [param] ...
时param
参数的不同,使用 volume 进行数据持久化时,docker run -v a:b ...
中a
表示 volume 名,b
表示要挂载的容器中的目录路径,如上文案例;在使用 bing mount 方式进行绑定时,a
表示宿主机的绑定的目录路径,b
表示要挂载的容器中的目录路径,如docker run -d -p 3306:3306 -v /test/mysql:/var/lib/mysql ...
- 使用 bind mount 方式运行容器
docker run -d -p 3306:3306 -v /test/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql
image 测试 bind mount 方式映射文件夹方式是否生效
文件同步成功image验证 volume 方式挂载文件进行数据持久化是否生效
移除容器后,文件并没有被删除image
tmpfs
这种方式是使用宿主机的内存作为存储,不会写到宿主机的文件系统中;
tmpfs 基本操作指令
TODO: 还未使用过,之后再进行补充
限制访问 IP
用户表中指定 host
当指定用户的 host 为宿机 IP 时,只能同过宿主机访问
- 创建用户
- 命令:
create user 'username'@'hostName' identified by 'password';
- 示例:
create user 'admin'@'172.16.10.1' identified by '123456';
- 命令:
- 给该用户授权
- 命令:
grant all privileges on *.* to 'username'@'hostName';
(*.*
表示所有权限) - 示例:
grant all privileges on *.* to 'admin'@'172.16.10.1';
(修改权限时在后面加with grant option
)
- 命令:
- 刷新权限配置
flush privileges;
更改 Mysql 配置
修改
/etc/mysql/my.conf
,指定绑定 IP
找到bind-address = 127.0.0.1
这一行
改为bind-address = 172.16.10.1
即可
![[鼓掌]](http://www.wycto.cn/static/plugins/layui/images/face/39.gif)
![[鼓掌]](http://www.wycto.cn/static/plugins/layui/images/face/39.gif)