Docker基础
基本概念
- 镜像(Image):相当于一个root文件系统,是创建Docker容器的模板;
- 容器(Container):镜像是静态文件,容器是运行镜像的实体;
- 仓库(Repository):用于保存镜像;
- 客户端(Client):用于执行docker命令;
- 服务端(Docker Deamon):实际上是一个守护进程。负责监听客户端请求,并且管理镜像、容器、网络、磁盘。
细化概念
优势
- 1、更高效的利用系统资源由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker 对系统资源的利用率更高。无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应用。2、更快速的启动时间传统的虚拟机技术启动应用服务往往需要数分钟,而 Docker 容器应用,由于直接 运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启 动时间。大大的节约了开发、测试、部署的时间。3、一致的运行环境开发过程中一个常见的问题是环境一致性问题。由于开发环境、测试环境、生产环 境不一致,导致有些 bug 并未在开发过程中被发现。而 Docker 的镜像提供了除内 核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现 “这段代码 在我机器上没问题啊” 这类问题。4、持续交付和部署对开发和运维人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。使用 Docker 可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员 可+以通过 Dockerfile 来进行镜像构建,并结合持续集成(Continuous Integration) 系 统进行集成测试,而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合 持续部署(Continuous Delivery/Deployment) 系统进行自动部署。而且使用 Dockerfile 使镜像构建透明化,不仅仅开发团队可以理解应用运行环 境,也方便运维团队理解应用运行所需条件,帮助更好的生产环境中部署该镜像。5、更轻松的迁移由于 Docker 确保了执行环境的一致性,使得应用的迁移更加容易。Docker 可以在 很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是笔记本,其运行结果是一致的。因此用户可以很轻易的将在一个平台上运行的应用,迁移到另一 个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。
Docker调优
镜像体积优化
构建速度优化
使用CMD VOLUMN命令
原生网络
Docker原生网络是基于 Linux的网络命名空间(net namespace) 和 虚拟网络设备 (特别是veth pair)实现。
在Docker中,网络接口默认都是虚拟的接口。Linux在内核中通过数据复制实现接口之间的数据传输,可以充分发挥数据在不同Docker容器或容器与宿主机转发效率。即发送接口发送缓存中的数据包,将被直接复制到接收接口的缓存中,无需通过物理网络设备进行交换。
Docker容器创建网络时,会在本地主机和容器内分别创建一个虚拟接口,并且让彼此连通,形成一对虚拟网络接口。这样的一对接口叫做veth pair。
Docker进程启动后,它会配置一个叫docker0的虚拟网桥在宿主机上,这个网桥接口允许Docker去分配虚拟的子网给即将启动的容器。这个网桥在容器内的网络和宿主机网络之间将作为网络接口的主节点呈现。
当Docker容器启动后,创建一对虚拟接口,分别放到本地主机和新容器的命名空间中。本地宿主机一端的虚拟接口连接到默认的docker0网桥或指定网桥上,并具有一个以veth开头的唯一名字。容器一端的虚拟接口将放到新创建的容器中,并修改名字作为eth0,这个接口只在容器的命名空间可见。
从网桥可用地址段中,分配一个网桥子网内的IP地址给容器的eth0。这个IP地址嵌在容器内网络中,用于提供容器网络到宿主机docker0网桥上的一个通道。并配置默认路由网关为docker0网卡的内部接口docker0的IP地址。Docker会自动配置iptables规则和配置NAT,便于连通宿主机上的docker0网桥。完成这些操作之后,容器就可以使用它所能看到的eth0虚拟网卡,来连接其他容器和访问外部网络。
单主机容器间网络
基于命名空间,Docker可以为容器创建隔离的网络环境,每个容器具有完全独立的网络栈,与宿主机隔离;也可以与宿主机或其他容器共享命名空间。Docker容器的网络模式有5种:
原创文章,作者:506227337,如若转载,请注明出处:https://blog.ytso.com/213159.html