澳门威利斯人_威利斯人娱乐「手机版」

来自 办公软件 2019-06-01 08:40 的文章
当前位置: 澳门威利斯人 > 办公软件 > 正文

在容器中管理数据,docker运行容器远程挂载卷的

docker容器中卷的使用

 

用户在行使docker的进程中,往往需求能查看容器内选择发生的数量,大概需求把容器内的数目开始展览备份,以至五个容器之间开始展览多少的共享,那必然关系容器的数额管理操作。

图片 1

数量管理的二种办法

容器中管理数据主要有三种方法:

创造卷,卷本身有种种措施举例上面创设的两种:

  • Data volumes
  • Data volume containers
  • 数据卷(Data Volumes)
  • 多少卷容器(Data Volumes Containers)

上边是官方的为主步骤:

 

本节将首先介绍怎样在容器内创立数据卷,并且把地点的目录或文件挂载到容器内的数额卷中。接下来会介绍怎么样利用数据卷容器在容器和主机、容器和容器之间共享数据,并贯彻数据的备份和回复。

创建一个卷:
$ docker volume create my-vol
查看:

$ docker volume ls
local        my-vol
查看卷的详情:
$ docker volume inspect my-vol
[
  {
    "Driver": "local",
    "Labels": {},
    "Mountpoint": "/var/lib/docker/volumes/my-vol/_data",
    "Name": "my-vol",
    "Options": {},
    "Scope": "local"
  }
]
移除卷:
$ docker volume rm my-vol

Data volumes

数据卷

数据卷是3个可供容器使用的例外目录,它绕过文件系统,能够提供许多立见成效的表征。

  • 数码卷能够在容器之间共享和重用
  • 对数据卷的修改会立时生效
  • 对数据卷的立异不会潜移默化镜像
  • 卷会一向留存,直到未有容器使用
    数据卷的施用,类似于Linux下对目录或文件举行mount操作。

接下去在此基础上急需用到卷驱动,具体步骤如下:


在容器内创立八个数量卷

在用docker run命令的时候,使用-v标志能够在容器内创制二个数据卷,多次应用-v标志能够创立七个数据卷。
上边选择training/webapp镜像创制叁个web容器,并创办四个数额卷挂载到容器的/webapp目录:
docker run -d -P --name web -v /webapp training/webapp python app.py
专注:-P是允许外部访问容器需求揭示的端口

安装vieux/sshfs作为卷驱动

 

挂载2个主机目录作为数据卷

采用-v标识也得以钦命挂载1个本地的已有目录到容器中去作为数据卷:
docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py
地点的指令加载主机的/src/webapp目录到容器的/opt/webapp目录。用户能够停放一些先后或数额到地方目录中,然后在容器内运维和使用。

docker挂载数据卷的私下认可权限是读写(rw),用户也得以通过ro内定为只读。
docker run -d -P --name web -v /src/webapp:/opt/webapp:ro training/webapp python app.py
加了:ro之后,容器内挂载的数据卷的多寡就不恐怕修改了。

# 卷插件安装
$ docker plugin install --grant-all-permissions vieux/sshfs

data volumes 对数据的持久化和分享提供一些很有用的特色。

挂载一个当地主机文件作为数据卷

-v标志也足以从主机挂载单个文件到容器中作为数据卷:
docker run --rm -it -v ~/.bash_history: ~/.bash_history ubuntu /bin/bash
如此这般就足以记下在容器输入过的一声令下历史了。(不推荐此种情势,建议直接挂载文件所在的目录)

创立2个卷

  • volumes 在容器成立的时候被起初化。
    • 借使容器重视的镜像包蕴钦赐点的数目,
    • 则在新容器建构时将已经存在的多少复制到volumes在开端化volumes的时候
  • Data volumes 可以被分享,也得以在八个容器中再一次 使用
  • 转移数据直接
  • 当你更新image时 data volumes 的变动将不会含有当中
  • data volumes 持久化在硬盘的,哪怕使用的 容器删除之后。

数量卷容器

1旦用户必要在容器之间共享一些不息创新的数码,最简便的方法正是数额卷容器。数据卷容器其实正是四个普普通通的器皿,特地用它提供数据卷供别的容器挂载,使用形式如下:

先是创设四个数据卷容器dbdata,并在其间创立四个数量卷挂载到/dbdata:
docker run -it -v /dbdata --name dbdata ubuntu

然后,能够在别的容器中选择--volumes-from来挂载dbdata容器中的数据卷,比方创造db一和db二八个容器,并从dbdata容器挂载数据卷:
docker run -it --volumes-from dbdata --name db1 ubuntu
docker run -it --volumes-from dbdata --name db2 ubuntu

那儿,容器db1和db贰都挂载同多个数据卷到均等的/dbdata目录。多个容器任何一方在该目录下的写入,别的容器都得以看得到。

与此相同的时间还能运用--volumes-from参数从四个容器挂载多个数据卷,还足以从其它已经挂载了容器卷的器皿来挂载数据卷:
docker run -d --name db3 --volumes-from db1 training/postgres

留意:使用--volumes-from参数所挂载数据卷的器皿本身并无需保持在运维状态

一经剔除了挂载的容器(包含dbdata、db①、db二),数据卷并不会被自动删除。假诺要删减一个数据卷,必须在剔除最终1个还挂载着它的器皿时显式地利用docker rm -v命令来钦赐同不时间删除关联的容器。

中间sshcmd和password表示远程主机挂载点、和ssh登入密码

 

应用数据卷容器迁移数据

能够运用多少卷容器对个中的数量卷进行备份、复苏,以贯彻数据的搬迁。

docker volume create --driver vieux/sshfs 
 -o sshcmd=192.168.5.106:/home/xzg
 -o password=xzg
 sshvolume

日增数据卷

备份

利用上边包车型地铁一声令下来备份dbdata数据卷容器内的数量卷:
docker run --volumes-from dbdata -v ${pwd}:/backup --name worker ubuntu tar cvf /backup/backup.tar /dbdata
第二利用ubuntu镜像创制了贰个容器worker,使用--volumes-from dbdata参数来让worker容器挂载dbdata容器的数据卷(即dbdata数据卷);使用-v ${pwd}:/backup参数来挂载本地的当前目录到worker容器的/backup目录。
worker容器运转后,使用了tar cvf /backup/backup.tar /dbdata命令来将/dbdata下内容备份为容器内的/backup/backup.tar,即宿主主机当前目录下的backup.tar。

使用已有镜像,创制容器

 

恢复

假设要还原数据到三个容器,首先成立2个暗含数据卷的器皿dbdata二
docker run -v /dbdata --name dbdata2 ubuntu /bin/bash
接下来成立另叁个新的容器,挂载dbdata贰的器皿,并使用untar解压备份文件到所挂载的容器卷中就可以:
docker run --volumes-from dbdata2 -v ${pwd}:/backup busybox tar xvf /backup/backup.tar

#查看已有镜像:
[root@localhost docker]# docker images
REPOSITORY     TAG         IMAGE ID      CREATED       SIZE
nginx        latest       da5939581ac8    7 days ago     108MB
#使用本地镜像创建容器 
docker run -d 
 -it 
 --name sshfs-container 
 --mount src=sshvolume,target=/app,type=volume,volume-driver=vieux/sshfs
 da5939581ac8

-v

跻身容器中查看是还是不是挂载成功

  • docker create 和 docker run 命令一道行使
  • 能够屡屡应用,来挂载多少个数据卷。
[root@localhost docker]# docker exec -it 228d13ee572a bash
root@228d13ee572a:/# ls
app bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@228d13ee572a:/# cd app/
root@228d13ee572a:/app# ls
a.txt docker

 

 以上就是本文的全体内容,希望对我们的就学抱有扶助,也可望大家多多辅助脚本之家。

挂载单个数据卷

你大概感兴趣的稿子:

  • 浅谈Docker 容器数据卷挂载小结
  • 详解挂载运营的docker容器中怎样挂载文件系统
  • docker容器挂载宿主主机目录的操作方法
zane@zane-V:~$ docker run -d -P --name web -v /webapp training/webapp python app.py
8a1626618e6ad963e18021a42847034196686745b202395d0412e35beb85976d

 

那会在容器里成立二个新数据卷 /webapp

 

本来也足以在Dockerfile中加多七个或多个新的数据卷。

 

定位数据卷

 

利用docker inspect 命令在本机中一定数据卷

 

$ docker inspect web
.....
   "Mounts": [
            {
                "Name": "c72823cb4542875fdb1103362dc3b743c87057bfdfe29a7cf66af65f73d16d07",
                "Source": "/var/lib/docker/volumes/c72823cb4542875fdb1103362dc3b743c87057bfdfe29a7cf66af65f73d16d07/_data",
                "Destination": "/webapp",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ],
.....

source:钦赐了在本机中的地方

destination:钦点了在容器中的地点

LANDW:数据卷是还是不是具有读写权限

 

挂载本地目录作为数据卷

zane@zane-V:~$  docker run -d -P --name webb -v /src/webapp:/webapp training/webapp python app.py
3b34d9907b5bae0e5e038b11b6e1f62e6579df5d11aeb850df7907f309f0c060

挂载本地目录/src/webapp 到容器中的 /webapp,如若容器中的/webapp已经存在,则覆盖,但是不会删除/webapp中原来的数目。这么些与Linux mount 命令的一举一动一点差距也未有于。

本文由澳门威利斯人发布于办公软件,转载请注明出处:在容器中管理数据,docker运行容器远程挂载卷的

关键词: 澳门威利斯人 docker