Docker之数据管理
Docker之数据管理
在对容器内的数据进行备份、或者多个容器间的共享时涉及到容器内的数据管理。
引入了数据卷、数据卷容器的概念。
数据卷
数据卷是一个特殊的目录,类似与linux的mount挂载,可以在宿主机与容器、容器与容器之间进行文件的访问。
- 数据卷可以共享和重用
- 数据卷的修改会立即生效
- 对数据卷的更新不会影响镜像
- 卷会一直存在,直到满意容器使用
挂载一个主机目录作为数据卷:
# 在创建容器的时候使用-v参数,可以多次使用
# 将容器80端口映射到宿主机5000端口,创建数据卷,将主机的/data挂载到容器/var/data中,默认文件权限是读写,可以通过添加参数ro设置为制度
docker run -itd -p 5000:80 -v /data:/var/data --name nginx nginx
docker run -itd -p 5000:80 -v /data:/var/data:ro --name nginx nginx
数据卷容器
就是使用一个容器专门用来进行数据存储和共享使用。
# 创建一个数据卷容器,创建一个数据卷/dbdata
docker run -itd -v /dbdata --name dbdata centos
# 创建两个客户端容器挂载数据卷容器,在docker run时通过 --volumes-from挂载
docker run -itd --name db1 --volumes-from dbdata centos
docker run -itd --name db2 --volumes-from dbdata centos
# 进入两个容器内都能看的/dbdata目录,现在三个容器都挂载了数据卷/dbdata,任何一方进行修改都能看的到
# 在dbdata进行修改,在db1和db2都能看到
docker exec -it dbdata /bin/bash
touch test.txt
# 可以通过多次使用--volumes-from挂载多个数据卷容器或者从已挂载数据卷容器的容器挂载,比如db1
Docker cp命令进行宿主机与容器文件传输
# 格式docker cp src des,将本地文件test复制到emby容器的/emby目录
docker cp ./test emby:/emby
# 从容器内复制到宿主机,将容器emby的/test.txt 复制到主机的/目录
docker cp emby:/test.txt /
# 可以在容器和主机直接相互传递
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
Docker volume
在默认/var/lib/docer/volumes/目录下管理创建的数据卷
# 创建数据卷emby,默认在/var/lib/docer/volumes/emby
docker volume create emby
# 然后在docker run 创建容器时调用
docker run -d -it --name emby -p 8096:8096 -p 8920:8920 -v emby:/emby emby/embyserver
点点滴滴,积少成多,终有一日能发挥用处。