Docker容器实战-容器的网络及数据
一、容器的网络
1. 容器自带网络
当Docker安装成功后,就会创建三种网络,通过docker network ls
可以查看
这三种网络就是系统自带的,在创建容器时可以通过--net
指定,详细信息在前面Docker容器实战-深入理解有讲过
2. 网络详情
功能描述:查看Docker的网络详细信息
语法:docker network inspect bridge 网络类型
当未运行容器时,容器字段为空,即"Containers": {}
,当启动一个容器后就会加入相关信息,上图是开启了一个ubuntu容器后的效果,每运行一个容器都会在全局注册相关的网络信息
3. 自定义网络
除了上面的三种默认网络,Docker还允许用户创建自己的网络:桥接网络;Overlay网络;插件网络等
(1)桥接网络
系统默认的桥接是docker0,如果要将多个容器隔离在一个新的桥接网络中,可以使用命令docker network create --driver bridge 网络名
启动一个容器时,通过--net=网络名
将容器挂载到自定义网络
这样,在同一个桥接下就形成了一个内网,相互之间可以通信,但仅限于在同一台主机上,如果要跨主机通信就需要使用Overlay网络
(2)Overlay网络
Overlay是一种虚拟交换技术,解决不同IP地址段之间的网络通信问题。Docker使用的Overlay技术是VXLAN,借助libnetwork实现,Overlay网络需要K-V服务存储相关主机信息,而目前Docker支持的K-V存储服务有Consul、Etcd、ZooKeeper,其中Consul是默认的发现服务
对于Overlay还需要主机开放UDP/4789和TCP/UDP/7946分别作为数据通道和控制通道
二、容器的数据
容器中的文件系统由分层文件系统提供,包含的只读层(镜像)和可读可写层(容器运行时层)都被封装在容器内部,如果要将主机上的文件系统共享给容器使用就需要通过数据卷或数据容器
1. 数据卷
数据卷提供了主机和容器之间共享数据的方式,有时候需要通过它来做持久化和数据共享。
当做持久化时,数据卷通常都会比较大,可以放在单独的磁盘或者阵列上,此时容器只是一个执行环境;当做数据共享时,可以用于开发、测试分布式系统。
(1)创建外部卷
数据卷主要通过-v参数指定,如图创建了一个name为datatest的容器同时创建了一个/webapp的数据卷,/webapp是其在容器内部的位置
通过docker inspect 容器ID
查看容器详细信息
可以看到其中有个Mounts数据项,而数据卷在宿主机的位置就是Source所指向的/var/lib/docker/中
(2)映射外部卷
如果通过-v src:des
的方式指定,则容器会直接将宿主机目录挂载到容器内部
如图就是把宿主机/root目录映射到了容器的/hostroot目录中,但不建议!
2. 数据型容器
由于容器本身就可以包含文件系统,所以可以把容器的卷分享给另一个容器使用
过程描述
创建包含外部卷的容器
在另一个容器中通过–volumes-from映射
注意创建包含外部卷的容器时使用的是create,而不是run(create后在start)
3. 数据卷的特点
数据卷在容器创建时初始化
数据卷既可以共享也可以在容器间重用
数据卷的读写是直接下发的
commit命令不会将改动保存到镜像中
即使容器被删除了,数据卷仍然存在-> 垃圾数据卷
三、镜像仓库
从第一个镜像开始就一直在和镜像仓库交流,镜像仓库用于保存镜像,用户可以从中下载、上传、修改镜像
功能描述:登录镜像仓库
语法:docker login
功能描述:查找镜像
语法:docker search 关键字
功能描述:拉取镜像
语法:docker pull 镜像名
功能描述:提交镜像
语法:docker push [OPTIONS] [server/][user/]imagename[:TAG]
注意:在push前一般都要登录,并且通过docker tag指定镜像名
提示:具体的过程在上一篇博文Docker容器实战-深入理解中有演示过
Docker容器实战-容器的网络及数据相关推荐
- docker入门,镜像,容器,数据卷,dockerfile,docker网络,springboot微服务打包docker镜像[狂神yyds]
docker学习大纲 docker概述 docker安装 docker命令 镜像命令 容器命令 操作命令 - docker镜像 容器数据卷 dockerfile docker网络原理 IDEA整合do ...
- Docker学习:容器间数据挂载与共享 | 远程共享挂载数据卷 | sshfs挂载远程volume | 容器内部通过sshfs访问远程主机 | -v |--volumes-from(实战篇)
前言 本讲是从Docker系列讲解课程,单独抽离出来的一个小节,主要介绍宿主.容器间数据共享,它的好处自然不言而喻,Tomcat集群就是这么玩儿的(多个tomcat服务,对应一套web应用). 核心原 ...
- Docker容器虚拟化技术---Docker高级实战(DockerFile)2
Docker容器虚拟化技术-Docker高级实战(DockerFile) DockerFile是一个文本格式的配置文件,用户可以使用DockerFile来快速创建自定义的镜像. 1. DockerFi ...
- Docker镜像、容器数据卷和Dockerfile
Docker镜像 概述 镜像是一种轻量级.可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码.运行时.库.环境变量和配置文件. UnionFS ...
- docker swarm MySQL_容器与云|在 Docker 中运行 MySQL:多主机网络下 Docker Swarm 模式的容器管理...
本文将以多主机网络环境为基础,探讨如何利用内置编排工具 Docker Swarm 模式对各主机上的容器加以管理. Docker Engine – Swarm 模式 在多台主机之上运行 MySQL 容器 ...
- Docker精华问答 | 如何让一个容器连接两个网络?
如今Docker的使用已经非常普遍,特别在一线互联网公司.使用Docker技术可以帮助企业快速水平扩展服务,从而到达弹性部署业务的能力.在云服务概念兴起之后,Docker的使用场景和范围进一步发展.今 ...
- Docker 外部访问容器Pp、数据管理volume、网络network 介绍
Docker 外部访问容器Pp.数据管理volume.网络network 介绍 外部访问容器 容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来 指定端口映射. ...
- 【Docker镜像原理容器数据卷】
文章目录 Docker镜像原理-commit镜像 一.镜像讲解 二.docker镜像加载原理 UnionFS (联合文件系统): 三.docker镜像分层 四.commit镜像 总结: 容器数据卷 五 ...
- Docker学习:容器五种(3+2)网络模式 | bridge模式 | host模式 | none模式 | container 模式 | 自定义网络模式详解
前言 本讲是从Docker系列讲解课程,单独抽离出来的一个小节,重点介绍容器网络模式, 属于了解范畴,充分了容器的网络模式,更有助于更好的理解Docker的容器之间的访问逻辑. 疑问:为什么要了解容器 ...
最新文章
- nginx服务器安全,要注意的地方
- 如何减少tomcat内存使用量?
- ElasticSearch 创建父子类型
- Perl BEGIN块和END块
- html js停止计时,用 js 写的计时器,暂停计时无法生效
- 注意扩展方法的返回值类型
- 赛普拉斯 12864_如何使用赛普拉斯自动化辅助功能测试
- 2019世界大学排名全新出炉!清华北大排名大幅下滑?
- Effective C# 原则38:使用和支持数据绑定(译)
- pip安装第三方库报错Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None))
- 文件系统性能测试工具 IOZONE工具
- 网络流量监测IP雷达 1.0
- linux开机自动启动sh脚本
- android 自定义锁屏api,Android锁屏小部件
- Java课程设计——计算平面图形面积周长、立体图形体积
- 接着这次机会,发一下我做试管的经历~
- Xilinx FPGA clk_wiz IP使用
- Boostnote是什么?-是为程序员开发的一种开放源代码记事本
- 计算机技术在x中的应用浅论,浅议网络技术在计算机专业教学中的应用
- windows下越狱iphone X笔记2
热门文章
- Linux 从零开始学习笔记
- 音视频开发-SRS 4.0开发环境搭建丨webrtc丨FFmpeg丨SRS流媒体服务器开发
- iOS 微信支付(服务端下单)
- 从100场腾讯面试中,抽出来经典面试题,腾讯技术职业等级丨C++后端开发丨Linux服务器开发丨面试经验丨面试总结
- C/C++ Linux后端进BAT的学习路线(腾讯官方认证)丨Linux服务器开发
- dx 汇编dec_汇编语言期末复习笔记(四)
- php.c drcom,drcom
- 拐过“三道弯”,看长沙如何打造“机器人湘军”
- 计算机经常使用不维护,电脑维护注意三个细节,电脑用上十年都没问题,别说我没有告诉你...
- java 判断文件是否存在 存在就删除_java中如何判断文件是否存在,不存在则新建文件...