设为首页 收藏本站
查看: 1101|回复: 0

[经验分享] Docker 数据管理与网络通信

[复制链接]
发表于 2019-2-21 08:23:39 | 显示全部楼层 |阅读模式
Docker镜像

Docker镜创建三种方法

  基于已有的镜像创建

  基于已有镜像创建只要使用dockers commit 命令。实质就是把一个容器里面运行的镜像程序以及该程序的运行环境打包起来生成新的镜像

-m 说明信息
-a 作者信息
-p 生产过程中停止容器的运行
docker ps -a 列出所有的容器
docker ps -l 列出最新创建的容器
  创建基于已有的镜像创建

docker create -it jasonlix/docker-cobbler /bin/bash  #创建一个新的镜像
docker ps -a  #列出所有容器
CONTAINER ID  docker守护进行在开启的时候会给容器分配的唯一ID



基于本地模板创建

  通过导入操作系统模板文件可以生成镜像,模板从OPENVZ 开源项目下载


wget http://download.openvz.org/template/precreated/debian-7.0-x86-minimal.tar.gz
cat debian-7.0-x86-minimal.tar.gz | docker import - daoke:new 名字可以自定义
docker images | grep new



基于Dockerfile创建

  除了手动生成Docker镜像之外还可以使用Dockerfile 自动生成镜像,Dockerfile是由组指令组成文件,其中每条指令对应Linux中的一条命令,docker程序将读取Dockerfile中的指令生成指定镜像Dockerfil结构大致分为四个部分,基础镜像信息,维护者信息,镜像操作指令和容器启动指令Dockerfile每条指令可以携带多个参数,支持使用#开头的注释


mkdir  apache
cd  apache
vim Dockerfile
vim run.sh
#!/bin/bash
rm -rf /run/httpd/*  #清楚缓存
exec /usr/sbin/apachectl -D FOREGROUND  #开启服务exec命令用于调用并执行指令的命令。
echo "this is ssoo" > index.html  # 生成主页
//生成镜像
docker build -t httpd:centos .
//新镜像运行容器 端口自定映射为80端端口
docker run -d -p 1122:80 httpd:centos
//测试
http://192.168.10.11:1122






将镜像上传到私有仓库中

  随着创建的镜像越来越多,目前有公有,私有。最方便就是公有仓库上传和下载都需要注册的私有也要注册

docker pull registry  # 私有仓库建立
vim /etc/docker/daemon.json  # 在etc/docker/目录下创建一个json文件否则在往自定义的私用云中上传镜像时回报错
{ "insecure-registries":["192.168.10.11:5000"]} # 在本地启动一个私有仓库监听端口号为5000
systemctl restart docker.service   重启服务
docker run -d -p 5000:5000 -v /data/registry:/tmp/registry registry #下载rsgistry 搭建本地私有云
docker tag jasonlix/docker-cobbler 192.168.10.11:5000/cobbler  #生成别名
docker push 192.168.10.11:5000/cobbler #上传
The push refers to a repository [192.168.10.11:5000/cobbler]
curl -XGET http://192.168.10.11:5000/v2/_catalog  #查看上传的镜像
{"repositories":["cobbler"]}  显示出就说明成功了




Docker的数据管理
  在Docker中为了方便查看容器内产生的数据或者将过个容器中的数据实现共享管理Docker容器中数据主要分为两种方式:数据卷(Data Volumes) 和数据将容器(Data Volumes Containers).
  数据卷


数据卷是一个提供容器使用的特殊目录,位于容器中。
可将宿主机的目录挂在到数据卷上,对数据卷修改的操作立即可见,并且更想数据不会影响。
从而实现数据在宿主机与容器之间迁移,数据卷的使用类似于Linux中的mount



  数据卷容器


数据卷容器就是一个人普通的容器,专门提供数据卷给其他容器挂在使用



容器互联

  简单说,就是会在源容器和接收容器之间建立一条隧道,接收容器可以看到源容器指定的信息

  1、创建源容器

  docker run -d -P --name w1 -it httpd:centos /bin/bash 使用docker run 创建容器

  2、创建接收容器,使用--link指定连接容器以实现容器互联

  docker run -d -P --name w2 --link w1:w1 -it httpd:centos /bin/bash

  3、测试容器互联

  进入容器使用ping命令查看容器是否能互相连通



Docker守护进程原理
  docker 守护进程通过docker0实现网络连接的各种服务
docker0 Linux虚拟网桥

  OSI七层模型中数据链路层的一种设备网桥通过make地址也就是通过物理层来划分 在不同网络中传输数据
Linux虚拟网桥的特点
可以设置IP地址 相等拥有一个隐藏的虚拟网卡
通常开始IP地址是三层模型中网络层不应该是现在二层模型上但是Linux虚拟网桥是通用网络设备抽象的一种只要是网络设备就能设置IP
当虚拟网桥拥有IP地址后Linux就可以通过路由表活在IP表的规则在网络层定义网桥就相当于拥有了隐藏的虚拟网卡
隐藏的虚拟网卡的名字就是这个虚拟网桥的名字

docker0 地址划分
IP 172.17.42.1 子网 255.255.0.0
MAC:02:42:ac:11:00:00 到02:42:ac:ff:ff
总共提供了65534 个地址
docker 根据IP范围为没一个容器提供make地址 避免了冲突
docker在守护经程开启式会创建两端的容器中网络设备另eth0一段也就是宿主机开启一个veth




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-675094-1-1.html 上篇帖子: 如何轻松搞定基于Docker的容器化部署 下篇帖子: Docker [Warning] IPv4 forwarding is disabled解决办法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表