存款和储蓄之卷

 

1.5.2 批量删减孤单 volumes

从地点的牵线能够看见,使用 docker run -v
运转的容器被删去未来,在主机上会遗留下来孤单的卷。能够应用上边包车型大巴总结方法来做清理:

root@docker1:/home/sammy# docker volume ls -qf dangling=true
244a23f3ab11f17345a68e77f96bb46a8dbaf445760dd86ab0faa07dfbd84236
c864cfac232e8728b1805abc8c363d324124b38e6297544a8cbbf61d883c7e46
f143b7f379fb6d012a08656fc950bf6df4bf5a5b90c72f310644aa997620122b
root@docker1:/home/sammy# docker volume rm $(docker volume ls -qf dangling=true)
244a23f3ab11f17345a68e77f96bb46a8dbaf445760dd86ab0faa07dfbd84236
c864cfac232e8728b1805abc8c363d324124b38e6297544a8cbbf61d883c7e46
f143b7f379fb6d012a08656fc950bf6df4bf5a5b90c72f310644aa997620122b
root@docker1:/home/sammy# docker volume ls
DRIVER              VOLUME NAME
local               5341c03f3b94f13f4c86d88ccb0f3b63487adf30dea7ae6b2d06e947235e7330
local               vol1

github 上有非常多本子能够自动化地清理孤单卷,举个例子:

  •  

1.6 小结

对上述内容的两点计算:

  • 容器内的数额是临时性的,它会随着容器生命周期的利落而熄灭
  • 私下认可的 Docker volume (driver =
    ‘loclal’卡塔尔国不管是哪个种类格局,本质上都是将容器所在的主机上的多个目录
    mount 到容器内的二个目录,因而,它不具备可移植性。

(7)Docker 存储 –
AUFS

1. Docker volume 的三种形态

    有意况容器都有多少持久化必要。前意气风发篇文章中涉嫌过,Docker 接收 AFUS
分层文件系统时,文件系统的退换都以发生在最上面的容器层。在容器的生命周期内,它是不断的,满含容器在被终止后。但是,当容器被剔除后,该数据层也随着被去除了。因而,Docker
采纳 volume (卷卡塔 尔(英语:State of Qatar)的样式来向容器提供长久化存款和储蓄。Docker volume
犹如下三种形象。

1.4 使用 docker volume 命令

Docker 新版本中引入了 docker volume 命令来处理 Docker volume。

(1卡塔 尔(阿拉伯语:قطر‎使用私下认可的 ‘local’ driver 创立一个 volume

root@docker1:/home/sammy# docker volume create --name vol1
vol1
root@docker1:/home/sammy# docker volume inspect vol1
[
    {
        "Name": "vol1",
        "Driver": "local",
        "Mountpoint": "/var/lib/docker/volumes/vol1/_data",
        "Labels": {},
        "Scope": "local"
    }
]

(2卡塔尔国使用那些 volume

docker run -d -P --name web4 -v vol1:/volume training/webapp python app.p

结果依旧一直以来的,就要 vol1 对应的主机上的目录挂载给容器内的 /volume
目录。

"Mounts": [
            {
                "Name": "vol1",
                "Source": "/var/lib/docker/volumes/vol1/_data",
                "Destination": "/volume",
                "Driver": "local",
                "Mode": "z",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],

(8)Docker 存储 –
Volume

(1)Docker
安装及宗旨用法

 

1.3 使用 data container

若是要在容器之间共享数据,最佳是使用 data container。这种 container
中不会跑应用,而只是挂载八个卷。举个例子:

始建一个 data container:

docker create -v /dbdata --name dbstore training/webapp  /bin/true

起步一个 app container:

docker run -d -P --name web3 --volumes-from dbstore training/webapp python app.py

实际上,对 web3 那一个容器来讲,volume 的本色没变,它只是将 dbstore 容器的
/dbdata 目录映射的主机上的目录映射到本人的 /dbdata 目录。

"Mounts": [
            {
                "Name": "5341c03f3b94f13f4c86d88ccb0f3b63487adf30dea7ae6b2d06e947235e7330",
                "Source": "/var/lib/docker/volumes/5341c03f3b94f13f4c86d88ccb0f3b63487adf30dea7ae6b2d06e947235e7330/_data",
                "Destination": "/dbdata",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ],

唯独,其好处是,能够随意其目录的如今性而持续地重复使用它。

(4)Docker 容器的隔开分离性 – 使用 cgroups
限定容器使用的能源

1.1 无 – 不使用 Docker volume

暗中认可情形下,容器不采纳别的volume,当时,容器的数量被保留在容器之内,它只在容器的生命周期内设有,会趁着容器的被去除而被去除。当然,也能够接收docker commit 命令将它长久化为三个新的镜像。

(5)Docker 网络

(6)若干厂家坐蓐条件中的容器网络方案

1.2 Data volume (数据卷)

一个 data volume 是容器中绕过 Union
文件系统的一个特定的目录。它被设计用来保存数据,而无论是容器的生命周期。由此,当你剔除叁个器皿时,Docker
断定不会活动地删除一个volume。犹如下三种形式来接纳 data volume:

(1卡塔 尔(英语:State of Qatar)使用 “-v 容器内目录” 形式

docker run -d -P --name web -v /webapp training/webapp python app.py

动用 docker inspect 命令能够见见,Docker 将本地三个 _data 目录 mount
为容器内的 webapp 目录了:

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

实在,在 web
容器被去除后,/var/lib/docker/volumes/f143b7f379fb6d012a08656fc950bf6df4bf5a5b90c72f310644aa9976二零一二2b/_data
目录及里面的源委都还有也许会保留下去,不过,新开发银行的容器无法再利用那么些目录,也正是说,已部分数据无法自动地被重复使用了。

(2卡塔 尔(英语:State of Qatar)使用 -v 来挂载叁个主机上的目录到容器的目录

docker run -d -P --name web2 -v /src/webapp:/webapp training/webapp python app.py

主机上的目录可以是三个本地目录,也能够在四个 NFS share
内,或然在叁个曾经格式化好了的块设备上。

其实这种格局和第一种未有实质的分别,容器内对 /webapp
的操作都会浮现到主机上的 /src/webapp
目录内。只是,重新开动容器时,能够重复利用同生机勃勃的法子来将 /src/webapp
目录挂载到新的器皿内,那样就足以兑现多少持久化的靶子。

(3卡塔尔使用 -v 来挂载主机上的三个文书到容器内的一个文本

docker run --rm -it -v ~/.bash_history:/root/.bash_history ubuntu /bin/bash

1.5.1 在剔除容器时去除 volume

能够运用 docker rm -v 命令在剔除容器时去除该容器的卷。

root@docker1:/home/sammy# docker run -d -P --name web5 -v /webapp training/webapp python app.py
69199905a74cb360935e32f4e99f7f11319f6aa36033a920aa0bae25874f5c69
root@docker1:/home/sammy# docker volume ls
DRIVER              VOLUME NAME
local               5341c03f3b94f13f4c86d88ccb0f3b63487adf30dea7ae6b2d06e947235e7330
local               838f4dd99721a9445be22a6b42d35e04cb43ad145ecf26107a9025f428587f76
local               vol1
root@docker1:/home/sammy# docker rm -vf web5
web5
root@docker1:/home/sammy# docker volume ls
DRIVER              VOLUME NAME
local               5341c03f3b94f13f4c86d88ccb0f3b63487adf30dea7ae6b2d06e947235e7330
local               vol1

(2)Docker 镜像

(3)Docker 容器的隔绝性 – 使用 Linux namespace
隔开容器的周转条件

2. Flocker:容器的分布式存款和储蓄平台

首先有的涉及过,原生的 Docker volume 不持有可移植性。于是,现身了Docker
的布满式卷实施方案
Flocker。先来探问 Flocker volume
和 Docker 原生 volume 的比较:

图片 1

启航叁个选用 Flocker 卷的容器:

docker run --volume-driver flocker -v flocker-volume:/container/dir --name=container-xyz

它推动的补益蕴含:

  • 容器的数码会被写入 Flocker
    后端存款和储蓄并不是主机上,由此,在主机现身故障时得以保险数据不放任
  • 在容器迁移时,Flocker 会自动地将卷从叁个 host 移植到另七个 host

Flocker 的结构:

图片 2

1.5 Volume 删除和孤独 volume 清理

发表评论

电子邮件地址不会被公开。 必填项已用*标注