Docker存储

版权声明:本文为博主原创文章,未经博主允许不得转载。 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,来挂载数据。

猜你喜欢

转载自blog.csdn.net/qq_1290259791/article/details/82946876
今日推荐