版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_1290259791/article/details/82946876
Docker存储
Volume介绍
提供独立于容器之外的持久化存储。
比如数据库操作中,数据库中的数据就是要持久化的,并且提供容器之间数据共享。
Volume使用
挂载卷
docker run -v /usr/share/nginx/html nginx
运行一个nginx镜像,通过-v挂载一个卷。
➜ demo2 docker run -d --name nginx -v /usr/share/nginx/html nginx
9a595da0adaf7b5f8d04fce431f7ccb12e47b5b349ee9cc7b01ffc1f747c8a14
➜ demo2 docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9a595da0adaf nginx "nginx -g 'daemon of…" 3 seconds ago Up 2 seconds 80/tcp nginx
➜ demo2 docker exec -i -t nginx /bin/bash
root@9a595da0adaf:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
- docker --name:为容器指定一个名称
- docker -d:后台运行容器,并且返回容器ID
- docker exec -i -t:在运行的容器中执行命令
- docker inspect name:获取容器/镜像的元数据
挂载本地目录
docker run -v $PWD/code:/var/www/html nginx
将本地的目录来挂载到容器的数据卷里去。
➜ demo2 mkdir html
➜ demo2 ls
Dockerfile html index.html
➜ demo2 mv index.html html
➜ demo2 ls
Dockerfile html
➜ demo2 docker run -p 8080:80 -d -v $PWD/html:/usr/share/nginx/html nginx
0f467871466d84433949659f1a99a1894fca9091a7e497873368f91fbda02e9f
➜ demo2 curl http://localhost:8080
第二个Dockerfile文件
➜ html vi index.html
➜ html cat index.html
我修改后
➜ html curl http://localhost:8080
我修改后
这是一个很好的开发环境,我们将本地的文件修改后,在Docker中就直接更改了。
挂载一个只存放数据的容器
docker run --volumes-from
➜ demo3 docker create -v $PWD/data:/var/mydata --name data_container ubuntu
870d06a457043279ab7566b1f1c68bb83fdca9cd23be1de7741a07065ec151d2
➜ demo3 docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
870d06a45704 ubuntu "/bin/bash" About a minute ago Created data_container
➜ demo3 docker run -it --volumes-from data_container ubuntu /bin/bash
root@dcd457931c75:/#
root@dcd457931c75:/# cd /var/mydata/
root@dcd457931c75:/var/mydata# ls
root@dcd457931c75:/var/mydata# touch lockme.txt
root@dcd457931c75:/var/mydata# exit
exit
➜ demo3 cd data
➜ data ls
lockme.txt
➜ data
我们首先创建一个仅有数据的容器,这个容器当作volumes
挂在到其他容器里去。
- docker create:创建一个新的容器但不启动它
- docker run --volumes-from:指定一个容器为volumes,来挂载数据。