docker基本内容简单复习

一、docker简介

在这里插入图片描述
docker是管理容器的引擎,docker为应用打包、部署平台,而非单纯的虚拟化技术

docker镜像

docker镜像是分层结构;共享宿主机kernel;同一docker主机支持运行多种Linux发行版;采用分层结构的好处是共享资源;base镜像提供的是最小的Linux发行版
docker镜像的构建:
docker commit构建镜像三部曲:
运行容器、修改容器、将容器保存为新的镜像
缺点:效率低、可重复性弱、容易出错;使用者无法对镜像进行审计、存在安全隐患。(构建过程我们通过docker history无法看到)

镜像的优化

  • 选择最精简的基础镜像
  • 减少镜像的层数
  • 清理镜像构建的中间产物
  • 注意优化网络请求
  • 使用多阶段构建镜像

二、docker网络

docker安装后会自动创建三种网络:host、none、bridge
docker安装时会创建一个名为 docker0 的Linux bridge,新建的容器会自动桥接到这个接口。

1、bridge模式下容器没有一个公有ip,只有宿主机可以直接访问,外部主机不可见;容器通过宿主机的NAT规则后可以访问外网
2、host网络模式需要在容器创建时指定–network=host;host模式可以让容器共享宿主机网络栈,外部主机可以与容器直接通信,但是这样的缺点是网络缺少隔离性;
3、none模式指禁用网络功能,只有io接口
4、建议使用自定义的网络来控制哪些容器可以相互通信,还可以自动DNS解析容器名称到IP地址。
5、桥接到不同网桥上的容器,彼此之间不能通信,docker在设计上就是隔离不同的network的;那么如何才能使两个不同网桥的容器通信呢?可以对其中一个容器添加一块另一个容器的网卡,这样两个容器拥有了一个公共的网卡,就可以进行通信。
6、容器如何访问外网是通过iptables的SNAT实现的;外网访问容器是通过端口映射实现的。
7、外网访问容器用到了docker-proxy和iptables DNAT;宿主机访问本机容器使用的是iptables DNAT;外部主机访问容器或容器之间的访问是docker-proxy实现
8、跨主机网络解决方案:docker原生的overlay和macvlan
macvlan网络方案实现:Linux kernel提供的一种网卡虚拟化技术,不需要Linux bridge,直接使用物理端口,性能极好;macvlan会独占主机网卡,但可以使用vlan子接口实现多macvlan网络;macvlan网络在二层上是隔离的,所以不同macvlan网络的容器是不能通信的。可以在三层上通过网关将macvlan网络连通起来。

三、docker数据卷

为什么要用数据卷:docker分层文件系统性能差、生命周期与容器相同;而docker数据卷mount到主机中,绕开了分层文件系统,和主机磁盘性能相同,容器删除后依然保留。并且它仅限本地磁盘,不能随容器迁移。

docker提供了三种数据卷,我们常用bind mount和docker管理卷
bind mount是将主机上的目录或者文件mount到容器里,使用直观高效、易于理解;bind mount默认权限是读写rw。可以在挂载的时候指定只读
bind mount必须指定host文件系统路径,限制了移植性。
docker managed volume 不需要指定mount源,docker自动为容器创建数
据卷目录。
默认创建的数据卷目录都在 /var/lib/docker/volumes 中;如果挂载时指向容器内已有的目录,原有数据会被复制到volume中。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值