Mount and use of docker data volume

Data sharing technology between containers, data generated by Docker containers are synchronized to the local

Volume technology --> directory mount, mount the directory in the container to the server

Use command to mount -v

# 可以挂载多个目录
docker run -it -v 主机目录地址:容器内目录地址

# 测试
docker run -it -v /root/temp:/home centos /bin/bash

linux主机的temp目录就和容器的home目录的操作是双向绑定了
删除容器并不会删除linux主机的数据

Test mount Mysql

启动mysql是需要配置密码的
# 官方测试
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=mypassword -dmysql:tag

# 自己运行容器挂载目录
-v 卷挂载
-e 环境配置
docker run -d -p 3310:3306 -v /root/mysql/conf:/etc/mysql/conf.d -v /root/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

Named and anonymous mount

# 匿名挂载
-P 随机映射端口
docker run -d -P --name nginx01 -v /etc/nginx nginx

# 具名挂载
-v 挂载名:容器内路径
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx

# 卷操作
docker volume --help
create      Create a volume
inspect     Display detailed information on one or more volumes
ls        查看所有卷
prune       Remove all unused local volumes
rm          Remove one or more volumes

# docker volume ls
local               39381d9f3555d38c6c24dcb0d3e7d6813b7e869e4c1a0f4e0a24c128dd483148  # 匿名挂载
local               juming-nginx	# 具名挂载

# 查看卷 docker volume inspect 卷id/卷名
docker volume inspect juming-nginx
[
    {
    
    
        "CreatedAt": "2020-08-29T13:35:12+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/juming-nginx/_data",
        "Name": "juming-nginx",
        "Options": null,
        "Scope": "local"
    }
]
所有容器内的卷, 在没有指定目录的情况下都可以在这查看: `/var/lib/docker/volumes/xxx/_data`

Expand

# -v 容器内路径:ro rw 设置读写权限 默认是 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 路径只能通过宿主机来操作, 容器内无法操作

Data volume container

--Volumes-from container name

# 通过 --volumes-from 容器名/id 来同步docker01的数据卷
--volumes-from 容器名/id # 同步这个容器的数据卷
docker run -it --name docker02 --volumes-from docker01 jiawei-centos:1.0

多个容器通过 --volumes-from 绑定的容器之间是双向绑定的, 删除`数据卷容器`不会影响其他容器, 其他容器他们还是绑定的

# 就是把所有关联的容器都停止了, 才会结束
结论: 数据卷容器的生命周期会一直持续到没有容器使用为止

Guess you like

Origin blog.csdn.net/weixin_44953227/article/details/108599839
Recommended