docker容器数据卷:
Docker中的数据可以存储在类似于虚拟机磁盘的介质中,在Docker中称为数据卷(Data Volume)。
数据卷可以用来存储Docker应用的数据,也可以用来在Docker容器间进行数据共享。
数据卷呈现给Docker容器的形式就是一个目录,支持多个容器间共享,修改也不会影响镜像。使用Docker的数据卷,
类似在系统中使用
Docker Volume数据卷可以实现:
1)绕过“拷贝写”系统,以达到本地磁盘IO的性能,(比如运行一个容器,在容器中对数据卷修改内容,会直接改变宿主机
上的数据卷中的内容,所以是本地磁盘IO的性能,而不是先在容器中写一份,最后还要将容器中的修改的内容拷贝出来进行同步。)
2)绕过“拷贝写”系统,有些文件不需要在docker commit打包进镜像文件。
3)数据卷可以在容器间共享和重用数据
4)数据卷可以在宿主和容器间共享数据
5)数据卷数据改变是直接修改的
6)数据卷是持续性的,直到没有容器使用它们。即便是初始的数据卷容器或中间层的数据卷容器删除了,只要还有其他的
容器使用数据卷,那么里面的数据都不会丢失。
Docker数据持久化:
容器在运行期间产生的数据是不会写在镜像里面的,重新用此镜像启动新的容器就会初始化镜像,会加一个全新的读写入
层来保存数据。如果想做到数据持久化,Docker提供数据卷(Data volume)或者数据容器卷来解决问题,另外还可以
通过commit提交一个新的镜像来保存产生的数据。
搭建docker服务:
[root@foundation38 docker]# systemctl start docker.service 开启服务
[root@foundation38 docker]# systemctl enable docker.service 开机自动启动
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@foundation38 docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@foundation38 docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
可以共享文件:
[root@foundation38 docker]# docker pull ubuntu 拉取镜像
[root@foundation38 docker]# mkdir /data1 建立目录
[root@foundation38 docker]# docker run -it --name vm1 -v /data1 ubuntu 创建容器
root@a1ea76896400:/# df
Filesystem 1K-blocks Used Available Use% Mounted on
overlay 307430744 36681704 270749040 12% /
tmpfs 1965404 0 1965404 0% /dev
tmpfs 1965404 0 1965404 0% /sys/fs/cgroup
/dev/mapper/rhel_foundation38-root 307430744 36681704 270749040 12% /data1
shm 65536 0 65536 0% /dev/shm
tmpfs 1965404 0 1965404 0% /sys/firmware
root@a1ea76896400:/# cd data1/
root@a1ea76896400:/data1# ls
root@a1ea76896400:/data1# [root@foundation38 docker]#
[root@foundation38 docker]# docker inspect vm1 | grep vol 过滤逻辑卷组
"Type": "volume",
"Source": "/var/lib/docker/volumes/cf43cdd721deda6d59111031b839ad18539c8e2c6edb4114dd776ad0c8f55567/_data",
[root@foundation38 docker]# cd /var/lib/docker/volumes/cf43cdd721deda6d59111031b839ad18539c8e2c6edb4114dd776ad0c8f55567/_data
[root@foundation38 _data]# ls
[root@foundation38 _data]# cp /etc/passwd . 可以复制文件到当前目录
[root@foundation38 _data]# ls
passwd
搭建nginx查看数据卷volume:
[root@foundation38 kiosk]# docker container attach vm1 连接
root@a1ea76896400:/data1# ls
passwd
root@a1ea76896400:/data1# pwd
/data1
root@a1ea76896400:/data1# [root@foundation38 kiosk]#
[root@foundation38 kiosk]# docker run -d --name vm2 -v /usr/share/nginx/html nginx 创建容器
Unable to find image 'nginx:latest'</