管理应用程序数据

Docker提供三种方式将数据从宿主机挂载到容器中:

  • • volumes:Docker管理宿主机文件系统的一部分(/var/lib/docker/volumes)。保存数据的最佳方式。
  • • bind mounts:将宿主机上的任意位置的文件或者目录挂载到容器中。
  • • tmpfs:挂载存储在主机系统的内存中,而不会写入主机的文件系统。如果不希望将数据持久存储在任何位置,可以使用
  • tmpfs,同时避免写入容器可写层提高性能。

管理卷:路径都是在/var/lib/docker/volumes/下的,路径不可改变

[root@docker ~]# docker volume create nginx-vol
nginx-vol
[root@docker ~]# docker volume ls
DRIVER              VOLUME NAME
local               nginx-vol
[root@docker ~]# docker volume inspect nginx-vol
[{"CreatedAt": "2018-11-26T15:25:23+08:00","Driver": "local","Labels": {},"Mountpoint": "/var/lib/docker/volumes/nginx-vol/_data","Name": "nginx-vol","Options": {},"Scope": "local"}
]

volumes

用卷创建一个容器:
[root@docker ~]# docker run -d --name=nginx-test1 --mount src=nginx-vol,dst=/usr/share/nginx/html -p 88:80 nginx:1.15
9d1d1fe4e0f189b8d66e7e6682ef725b441a355b7cb9e85ee62406249fcffd6d

[root@docker ~]# cd /var/lib/docker/volumes/nginx-vol/_data --这里的数据卷是和容器中的是一样的内容
[root@docker _data]# ls
50x.html index.html
[root@docker _data]# echo 'nginx1' > index.html

验证:
[root@docker _data]# curl 192.168.1.13:88
nginx1

注意:

  1. 如果没有指定卷,自动创建。
  2. 建议使用--mount,更通用

Bind Mounts

用卷创建一个容器:指定type=bind --》这个是将宿主机上app/wwwroot 挂载到/usr/share/nginx/html 上
[root@docker _data]# docker run -d -it --name=nginx-test --mount type=bind,src=/app/wwwroot,dst=/usr/share/nginx/html -p 88:80 nginx

验证:
[root@docker wwwroot]# curl 192.168.1.13:88
nginx1
进入到了该容器:
root@de4cc3ad76a0:/# cd /usr/share/nginx/html/
root@de4cc3ad76a0:/usr/share/nginx/html# ls
index.html

注意:

  1. 如果源文件/目录没有存在,不会自动创建,会抛出一个错误。
  2. 如果挂载目标在容器中非空目录,则该目录现有内容将被隐藏。

小结

Volume特点:

  • • 多个运行容器之间共享数据。
  • • 当容器停止或被移除时,该卷依然存在。
  • • 多个容器可以同时挂载相同的卷。
  • • 当明确删除卷时,卷才会被删除。
  • • 将容器的数据存储在远程主机或其他存储上
  • • 将数据从一台Docker主机迁移到另一台时,先停止容器,然后备份卷的目录(/var/lib/docker/volumes/)

Bind Mounts特点:

  • • 从主机共享配置文件到容器。默认情况下,挂载主机/etc/resolv.conf到每个容器,提供DNS解析。
  • • 在Docker主机上的开发环境和容器之间共享源代码。例如,可以将Maven target目录挂载到容器中,每次在Docker主机
  • 上构建Maven项目时,容器都可以访问构建的项目包。
  • • 当Docker主机的文件或目录结构保证与容器所需的绑定挂载一致时

容器网络

网络模式

bridge
–net=bridge
默认网络,Docker启动后创建一个docker0网桥,默认创建的容器也是添加到这个网桥中。
• host
–net=host
容器不会获得一个独立的network namespace,而是与宿主机共用一个。这就意味着容器不会有自己的网卡信息,而是使用宿主
机的。容器除了网络,其他都是隔离的。
• none
–net=none
获取独立的network namespace,但不为容器进行任何网络配置,需要我们手动配置。• container   2个容器的网络可以通讯
–net=container:Name/ID
与指定的容器使用同一个network namespace,具有同样的网络配置信息,两个容器除了网络,其他都还是隔离的。
• 自定义网络
与默认的bridge原理一样,但自定义网络具备内部DNS发现,可以通过容器名或者主机名容器之间网络通信。

容器网络访问原理

验证:
注意系统必须指定 -it 不然启动失败
[root@docker wwwroot]# docker run -itd --net=bridge --name=icar1 -h icar1 centos
90b9a40f6290e6136e438bab5dcbd2720ed1b2c0a7b9c6abaede64574d4831e8

[root@docker wwwroot]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
90b9a40f6290 centos "/bin/bash" 4 seconds ago Up 3 seconds icar1
[root@docker wwwroot]# docker exec -it 90b9a40f6290 bash

转载于:https://blog.51cto.com/jacksoner/2322155

docker管理应用程序数据、容器网络相关推荐

  1. Docker 基础知识 - 使用绑定挂载(bind mounts)管理应用程序数据

    绑定挂载(bind mounts)在 Docker 的早期就已经出现了.与卷相比,绑定挂载的功能有限.当您使用绑定挂载时,主机上的文件或目录将挂载到容器中.文件或目录由其在主机上的完整或相对路径引用. ...

  2. Docker 收购 SocketPlane 多主机容器网络

    Docker 官方宣布收购 SocketPlane 多主机容器网络解决方案.SocketPlane 最开始是由 4 个人创办的,希望该系统能成为 Docker 生态里重要的一部分.SocketPlan ...

  3. Docker网络体系结构:设计可扩展、可移植的Docker容器网络

    原文地址 译者:本人翻译水平有限,目的仅是为了学好Docker,如有错误请见谅. 翻译版本:v1.01(将不断优化翻译质量) 本文包含以下内容 Docker容器就是将应用及其所依赖运行环境的完整文件系 ...

  4. Docker容器网络解析

    Docker 容器网络的发展历史 在 Dokcer 发布之初,Docker 是将网络.管理.安全等集成在一起的,其中网络模块可以为容器提供桥接网络.主机网络等简单的网络功能. 从 1.7 版本开始,D ...

  5. 【Netty】ByteBuf--Netty的数据容器

    ByteBuf–Netty的数据容器 网络传输的基本单位是字节,在Java NIO中,JDK提供了Buffer接口,以及其相关的实现作为NIO操作 数据的容器,如ByteBuffer等等. 而Nett ...

  6. 数据中心网络如何发展成为无损数据中心网络?

    数据中心网络如何发展成为无损数据中心网络? 作者:袁冬至 公众号:救命的药 研究方向:数据中心网络 欢迎交流,学习! 数据中心网络如何实现无丢包.低时延.高吞吐的能力? 为解决上述问题,传统原生TCP ...

  7. 数据中心网络布线为大数据时代铺路

    罗森伯格亚太电子有限公司:孙慧永 前言 伴随云时代的来临,大数据(Big data)也吸引了越来越多的关注,人们用它来描述和定义信息爆炸时代产生的海量数据.我们来了解一下大数据的概念,大数据是指数据集 ...

  8. Docker容器网络实例管理

    Docker容器网络实例管理 Linux内核实现名称空间的创建 ip netns命令 可以借助ip netns命令来完成对 Network Namespace 的各种操作.ip netns命令来自于i ...

  9. 解锁TrueNAS SCALE 三方docker容器网络访问限制,默认是关闭的;并添加Portainer-CE容器webGUI管理器

    解锁TrueNAS SCALE 三方docker容器网络访问限制,默认是关闭的:并添加Portainer-CE容器webGUI管理器 本教程环境版本:TrueNAS-SCALE-21.06-BETA. ...

最新文章

  1. 建立循环单链表(头插法)
  2. 检测电脑硬件的软件_为电脑DIY爱好者推荐一款非常实用的硬件测试软件
  3. WebService到底是什么?
  4. Linux内存背后的那些神秘往事
  5. LaunchScreen原理
  6. C++11 并发指南六( atomic 类型详解二 std::atomic )
  7. 平安 开源 数据库 实践_自举开源业务的3个最佳实践
  8. php引擎,php基于什么引擎
  9. showModalDialog模态对话框的使用以及浏览器兼容
  10. sqlserver text最大长度_1156. 单字符重复子串的最大长度
  11. RFC 793翻译(TCP的主体内容)
  12. 趣味理解ADO.NET对象模型
  13. 如何使用微小区一键生成可打印的物业缴费通知单
  14. 人工智能与安全论坛:智能与安全的融合与对抗
  15. nutch mysql hadoop_nutch+hadoop 配置使用
  16. JS动态添加HTML元素
  17. mysql如何数据恢复
  18. mysql怎么样修改schema_MySQL 5.6使用pt-online-schema-change在线修改大表字段长度
  19. 跟siki老师学C#第四天(练习部分)
  20. SonicWall如何安全模式升级防火墙

热门文章

  1. DHCP通过NAP认证
  2. 巧妙解决AJAX跨域问题
  3. POJ1256 (C++ compare函数)
  4. ListView和SlidingDrawer
  5. PHP vscode+XDebug 远程断点调试服务器上的代码
  6. # 20175311 2018-2019-2 《Java程序设计》第2周学习总结
  7. 压力测试以及编译安装httpd2.4
  8. java 动态获取IP地址(城市)
  9. ubuntu下链接open***
  10. 想到Exchanger N parties的一种用法