在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

docker怎么管理容器的数据

126次阅读
没有评论

共计 5937 个字符,预计需要花费 15 分钟才能阅读完成。

本篇内容介绍了“docker 怎么管理容器的数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让丸趣 TV 小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

管理容器的数据

可以通过两种方式管理容器中的数据, 数据卷(Data Volumns), 数据卷容器(Data Volumns containers)

数据卷 (Data Volumns) 概念:

data volume 存在一个或多个容器中的特殊的目录, 它绕过容器的 Union File System. 用来持久或共享数据. 它是独立于容器的生命周期的. 它有几个特点:

容器创建好后会初始化数据卷. 如果基础镜像在此挂载点上有数据, 它会将数据复制到数据卷里.(挂在主机的目录则不会复制)

数据卷可以被多个容器共享使用

对数据卷的修改是直接的.

对数据卷的更改, 不会因为你更新镜像而被包括进去.

就算容器被删除, 数据卷还继续存在.

添加数据卷

[root@srv00 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hippo/nginx v1 2e1513eeaa0a 2 days ago 281.1 MB
hippo/nginx v1.10 1e20546f8434 2 days ago 281.1 MB
[root@srv00 ~]# docker run -it -v /etc/nginx hippo/nginx:v1.10
[root@bab2e5725220 /]# ll /etc/nginx/
total 32
drwxr-xr-x 2 root root 25 May 20 07:40 conf.d
...

可以看到容器内的数据卷目录中, 是原有的 /etc/nginx 目录的内容.

可以修改一个文件配置看看. 并检查主机上对应的数据卷内容.

[root@srv00 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bab2e5725220 hippo/nginx:v1.10  /bin/bash  About a minute ago Exited (0) 15 seconds ago hungry_jennings
[root@srv00 ~]# docker inspect bab2e5725220
  Mounts : [
 {
  Name :  b6c506a65d5f495ca6ce06aeb30bb6472295d459bfbeb464e89681e17ffe3541 ,
  Source :  /var/lib/docker/volumes/b6c506a65d5f495ca6ce06aeb30bb6472295d459bfbeb464e89681e17ffe3541/_data ,
  Destination :  /etc/nginx ,
  Driver :  local ,
  Mode :  ,
  RW : true,
  Propagation :  
 }
[root@srv00 _data]# docker rm bab2e5725220
bab2e5725220
[root@srv00 ~]# cat /var/lib/docker/volumes/b6c506a65d5f495ca6ce06aeb30bb6472295d459bfbeb464e89681e17ffe3541/_data/nginx.conf 
...

对数据卷的修改直接持久在主机对应的地方.. 就算容器已经关闭或删除.

挂载主机目录

[root@srv00 ~]# mkdir nginx
[root@srv00 ~]# docker run -it -v /root/nginx:/etc/nginx hippo/nginx:v1.10
[root@c0750f9779b3 /]# ll /etc/nginx/  === 无内容
[root@srv00 ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c0750f9779b3 hippo/nginx:v1.10  /bin/bash  23 seconds ago Exited (0) 11 seconds ago agitated_mclean
[root@srv00 ~]# docker inspect c0750f9779b3
  Mounts : [
 {
  Source :  /root/nginx ,
  Destination :  /etc/nginx ,
  Mode :  ,
  RW : true,
  Propagation :  rprivate 
 }
...

可以看到是主机的对应目录挂载到容器内.RW 是可读写标志, 效果和 mount 命令一致.

如果是相对目录:

[root@srv00 ~]# mkdir -p a/b
[root@srv00 ~]# touch a/b/c
[root@srv00 ~]# docker run -it -v a/b:/etc/nginx hippo/nginx:v1.10 
docker: Error response from daemon: create a/b:  a/b  includes invalid characters for a local volume name, only  [a-zA-Z0-9][a-zA-Z0-9_.-]  are allowed.
See  docker run --help .
[root@srv00 ~]# docker run -it -v nginx:/etc/nginx hippo/nginx:v1.10
e4e2f137a7412f6474018e88985e2f605b5f77f2cd1ce27280142994e5feb030
[root@srv00 ~]# docker inspect e4e2f137a7412f6474018e88985e2f605b5f77f2cd1ce27280142994e5feb030
  Mounts : [
 {
  Name :  nginx ,
  Source :  /var/lib/docker/volumes/nginx/_data ,
  Destination :  /etc/nginx ,
  Driver :  local ,
  Mode :  z ,
  RW : true,
  Propagation :  rprivate 
 }
...

主机不可以指定相对目录, 只可以对数据卷命名.

当然你可以以只读方式挂载.

[root@srv00 ~]# docker run -itd -v nginx:/etc/nginx:ro hippo/nginx:v1.10
b0a67f835eaac812ab37086bef05be6b0726ba080d73113221a5cf8a25bfb513
[root@srv00 ~]# docker inspect b0a67f835eaac812ab37086bef05be6b0726ba080d73113221a5cf8a25bfb513
  Mounts : [
 {
  Name :  nginx ,
  Source :  /var/lib/docker/volumes/nginx/_data ,
  Destination :  /etc/nginx ,
  Driver :  local ,
  Mode :  ro ,
  RW : false,
  Propagation :  rprivate 
 }
 ...

单独创建数据卷

之前都是通过运行容器的同时创建数据卷. 当然也可以先创建好数据卷. 然后挂载到容器中使用. 数据卷管理使用 docker volume 命令. 我们看一下刚才创建了哪些数据卷.

[root@srv00 ~]# docker volume ls
DRIVER VOLUME NAME
local 0159a70ae1a86b5c2947d323b5e6d539101770b66af5cb0ba6d87c12a1c2c742
local b6c506a65d5f495ca6ce06aeb30bb6472295d459bfbeb464e89681e17ffe3541
local nginx
[root@srv00 ~]# docker volume inspect 0159a70ae1a86b5c2947d323b5e6d539101770b66af5cb0ba6d87c12a1c2c742
 {
  Name :  0159a70ae1a86b5c2947d323b5e6d539101770b66af5cb0ba6d87c12a1c2c742 ,
  Driver :  local ,
  Mountpoint :  /var/lib/docker/volumes/0159a70ae1a86b5c2947d323b5e6d539101770b66af5cb0ba6d87c12a1c2c742/_data ,
  Labels : null
 }
[root@srv00 ~]# docker volume inspect nginx
 {
  Name :  nginx ,
  Driver :  local ,
  Mountpoint :  /var/lib/docker/volumes/nginx/_data ,
  Labels : null
 }
]

Driver 是 local, 就是映射到本地主机. 也可以使用其他驱动. 映射到比如 iscsi,NFS,FC 等共享磁盘上.

我们来单独创建一个数据卷并使用

[root@srv00 ~]# docker volume create --name dbdata
dbdata
[root@srv00 ~]# docker volume ls
DRIVER VOLUME NAME
local 0159a70ae1a86b5c2947d323b5e6d539101770b66af5cb0ba6d87c12a1c2c742
local b6c506a65d5f495ca6ce06aeb30bb6472295d459bfbeb464e89681e17ffe3541
local dbdata
local nginx
[root@srv00 ~]# docker volume inspect dbdata
 {
  Name :  dbdata ,
  Driver :  local ,
  Mountpoint :  /var/lib/docker/volumes/dbdata/_data ,
  Labels : {}
 }
[root@srv00 ~]# docker run -itd -v dbdata:/etc/nginx hippo/nginx:v1.10

数据卷容器(Data Volumns containers)

我们先创建个数据卷容器. 然后运行两个单独的容器, 挂载数据卷容器.

[root@srv00 ~]# docker create -v /opt --name datastore centos
e5c37981c4f9e16f92b0d5215f5dfa5f79c86282e3018435a5e380350a5cce2c
[root@srv00 ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e5c37981c4f9 centos  /bin/bash  11 seconds ago Created datastore
[root@srv00 ~]# docker run -itd --volumes-from datastore --name db1 centos
[root@srv00 ~]# docker run -itd --volumes-from datastore --name db2 centos

看看数据是否互相可访问.

[root@srv00 ~]# docker exec -it db1 /bin/bash
[root@cd8fa62d3b29 ~]# echo  db111111    /opt/txt
[root@cd8fa62d3b29 ~]# exit
[root@srv00 ~]# docker exec -it db2 /bin/bash
[root@72c21395c72b /]# cat /opt/txt 
db111111
[root@72c21395c72b /]# exit
[root@srv00 ~]# docker inspect datastore
[root@srv00 ~]# docker inspect db1
[root@srv00 ~]# docker inspect db2
  Mounts : [
 {
  Name :  6b650687d6d2a448006dcb2b966b5f69bb31d34cf3e93f5e3c3460b6fd6eea4a ,
  Source :  /var/lib/docker/volumes/6b650687d6d2a448006dcb2b966b5f69bb31d34cf3e93f5e3c3460b6fd6eea4a/_data ,
  Destination :  /opt ,
  Driver :  local ,
  Mode :  ,
  RW : true,
  Propagation :  
 }
... 
[root@srv00 ~]# docker volume inspect 6b650687d6d2a448006dcb2b966b5f69bb31d34cf3e93f5e3c3460b6fd6eea4a
 {
  Name :  6b650687d6d2a448006dcb2b966b5f69bb31d34cf3e93f5e3c3460b6fd6eea4a ,
  Driver :  local ,
  Mountpoint :  /var/lib/docker/volumes/6b650687d6d2a448006dcb2b966b5f69bb31d34cf3e93f5e3c3460b6fd6eea4a/_data ,
  Labels : null
 }
]

几个容器挂在的数据卷都是相同的. 内部其实是创建了一个数据卷. 就算删除所有相关的运行的容器.. 数据卷不会删除.

“docker 怎么管理容器的数据”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注丸趣 TV 网站,丸趣 TV 小编将为大家输出更多高质量的实用文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计5937字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 四虎在线播放 | 国产免费网 | 午夜视频免费看 | a级免费观看 | 成人一级片在线观看 | 香蕉欧美成人精品a∨在线观看 | 精品日本一区二区 | 精品午夜久久影视 | 黄色a级片免费观看 | 国产精品久久久久无毒 | 东北少妇不戴套对白第一次 | 天天干天天透 | 国产乱人伦精品一区二区在线观看 | 男人的天堂欧美 | 国产成人精品午夜视频' | 一级久久| 国模大胆一区二区三区 | 免费日韩视频 | 国产精品亲子乱子伦xxxx裸 | 成年人免费观看的视频 | 国产男女免费视频 | 97精品超碰一区二区三区 | 青青草色 | 精品亚洲a∨无码一区二区三区 | 亚洲综合精品一区二区三区中文 | 免费高清观看青青草原 | 精品成人一区二区三区四区 | 九色在线播放 | 亚洲美女久久 | 2020国产成人精品免费视频 | 99在线影院 | 中文在线播放 | a毛片视频免费观看影院 | 午夜男人网站 | 伊人久久无码中文字幕 | 亚洲综合性 | 欧美一区二区三区激情 | 91免费观看在线网址 | 久久精品人人做人人看最新章 | 日本三级视频在线观看 | 国内精品久久久久久西瓜色吧 |