容器技术

docker 网络模式详解

那年仲夏 提交于 2019-11-27 21:42:32
一、前言 Docker作为目前最火的轻量级容器技术,有很多令人称道的功能,如Docker的镜像管理。然而,Docker同样有着很多不完善的地方,网络方面就是Docker比较薄弱的部分。因此,我们有必要深入了解Docker的网络知识,以满足更高的网络需求。 我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式: host模式,使用--net=host指定。 容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。 container模式,使用--net=container:NAME_or_ID指定。 创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围。 none模式,使用--net=none指定。 该模式关闭了容器的网络功能。 bridge模式,使用--net=bridge指定,默认设置。 此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及Iptables nat表配置与宿主机通信。 注意:使用 docker network ls 命令列出这些docker内置的网络模式。 Docker 网络模型 二、host模式 众所周知,Docker使用了Linux的Namespaces技术来进行资源隔离,如PID

Docker入门

狂风中的少年 提交于 2019-11-27 21:32:59
目 录 一、docker简要 二、docker基本概念 三、手工构建 四、Dockerfile构建 一、docker简要 什么是docker   Docker是一个开放源代码软件项目,项目主要代码在2013年开源于 GitHub 。它是云服务技术上的一次创新,让应用程序部署在软件容器下的工作可以自动化进行,借此在Linux操作系统上,提供一个额外的软件抽象层,以及操作系统曾虚拟化的自动管理机制。   Docker利用Linux核心中的资源分脱机制,例如cgroups,以及Linux核心名字空间(name space),来创建独立的软件容器(containers),属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其他的隔离的进程,因此也称其为容器。Docker在容器的基础上进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护,使得其比虚拟机技术更为轻便、快捷。Docker可以在单一Linux实体下运行,避免因为创建一个虚拟机而造成的额外负担。 Docker和虚拟机的区别与特点   对于新手来说,第一个觉得困惑的地方可能就是不清楚Docker和虚拟机之间到底是什么关系。以下两张图分别介绍了虚拟机与Docker容器的结构。   对于虚拟机技术来说,传统的虚拟机需要模拟整台机器包括硬件,每台虚拟机都需要有自己的操作系统,虚拟机一旦被开启

【Docker入门篇】

和自甴很熟 提交于 2019-11-27 20:57:27
目录 Linux容器 Docker的优势 Docker三大概念 安装使用Docker 补充知识 " @ *** 所谓Docker Docker最初是dotCloud公司创始人Solomon Hykes在法国期间发起的一个公司内部项目,于2013年3月以Apache2.0授权协议开源,主要项目代码在GitHub上进行维护. Docker使用Google公司推出的GO语言进行开发实现. Docker是Linux容器的一种封装,提供简单易用的容器使用接口,它是最流行的Linux容器解决方案. Docker的接口相当简单,用户可以方便的创建、消费容器. Docker将应用程序与程序的依赖打包在一个文件内,运行这个文件就会生成一个虚拟容器. 程序运行在虚拟容器里,如同在真实物理机上运行一样,有了Docker,就不用担心环境问题了. Docker应用场景 web应用的自动化打包和发布. 自动化测试和持续集成、发布. 在服务型环境中部署和调整数据库或其它应用. *** Linux容器 由于虚拟机的诸多问题,Linux发展出了另一种虚拟化技术:Linux容器(Linux Containers,缩写LXC). . Linux容器不是模拟一个完整的操作系统,而是对进程进行隔离,在正常的进程外面套了一个保护层,对于容器里面的进程来说,它接触的资源都是虚拟的,从而实现和底层系统的隔离. . -------

Docker学习心得

我只是一个虾纸丫 提交于 2019-11-27 20:48:24
写在前面的话 每一轮新技术的兴起,无论对公司还是个人既是机会也是挑战。 我个人的看法是:如果某项新技术未来将成为主流,就应该及早尽快掌握。 因为: 1、新技术意味着新的市场和新的需求。 初期掌握这种技术的人不会很多,而市场需求会越来越大,因而会形成供不应求的卖方市场,物以稀为贵,这对技术人员将是一个难得的价值提升机会。 2、学习新技术需要时间和精力,早起步早成材。 3、本文主要总结容器核心知识,进阶知识以后有机会在学习 What - 什么是容器? 容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行。开发人员在自己笔记本上创建并测试好的容器,无需任何修改就能够在生产系统的虚拟机、物理服务器或公有云主机上运行。 How-为什么需要容器? Docker 将集装箱思想运用到软件打包上,为代码提供了一个基于容器的标准化运输系统。Docker 可以将任何应用及其依赖打包成一个轻量级、可移植、自包含的容器。容器可以运行在几乎所有的操作系统上 容器基本入门 Docker 的核心组件包括: Docker 客户端 - Client:通过docker在host上构建和运行容器 Docker 服务器 - Docker daemon:是服务器组件,以 Linux 后台服务的方式运行。 Docker 镜像 - Image:通过它可以创建 Docker 容器。

Lumins Technolgies一年来在生产中使用Kubernetes的经验

依然范特西╮ 提交于 2019-11-27 20:44:55
在2015年,我们Lumins Technolgoies在亚马逊的EC2上面运行配置很多年之后,我所在的团队接到任务,负责为Lumins Technolgoies所有其他开发团队的配置创建一个新的配置平台。过去这么多年,AWS的设置运行得很好。但是配置设置,定制脚本,和自动配置的工具这些东西,对于操作团队以外的工程师来说十分难用——特别是对没有资源来学习所有关于这些脚本和工具的团队来讲。主要的问题就是没有配置单元,因为没有,所以在开发和操作之间有一个鸿沟。显然,容器化趋势将会改变这个状况。 如果你还没有了解Docker和Kubernetes能够带给产品什么,那么来读一读我们团队是如何成为早期使用者的。我们目前已经在生产过程中使用Kubernetes超过一年了。 从容器和容器编排工具开始 现在我相信容器是未来的配置编排格式。他们使得用需要的基础设施来打包应用程序变得更加容易。虽然像Docker这样的工具提供真实的容器,但是我们也需要工具来处理例如像replication,failover以及API来自动化部署到多个机器。 在2015年初的时候,像Kubernetes和Docker Swarm这样的集群工具还不成熟,只有一个早期的alpha版本。我们仍然尝试使用它们,最开始的时候使用的是Docker Swarm。 首先,我们使用Swarm来处理我们自己的网络连接

[Kubernetes] [Kubernetes容器网络1] 容器网络基础

喜欢而已 提交于 2019-11-27 19:59:32
目录 浅谈容器网络 同一宿主机上的容器之间如何通信 两个不同宿主机上的容器之间如何通信 极客时间 张磊 深入剖析Kubernetes 课程笔记 浅谈容器网络 一个Linux容器的网络栈被隔离在自己的Network Namespace中,Network Namespace包括了:网卡(Network Interface),回环设备(Lookback Device),路由表(Routing Table)和iptables规则。 # 声明直接使用宿主机的网络栈 docker run -d -net=host --name nginx-host nginx 大多数情况下,都希望容器使用自己的网络栈:即拥有自己的IP地址和端口。 同一宿主机上的容器之间如何通信 那么宿主机上不同network namespace下的容器之间如何通信?Linux 网桥(Bridge) 网桥是Linux内核中的一个模块,作用类似于虚拟交换机,它工作在链路层,主要功能是将数据包根据MAC地址转发到不同的端口。 利用Veth Path作为“网线”将不同Network Namespace下的容器连接到网桥上。 启动一个容器查看其中的网络设备: # 在宿主机上 $ docker exec -it nginx-1 /bin/bash # 在容器里 root@2b3c181aecf1:/# ifconfig eth0:

Docker 基础

佐手、 提交于 2019-11-27 19:00:00
Docker 是一个开源的应用容器引擎,基于 Go 语言,并遵从Apache2.0协议开源,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 一个完整的Docker有以下几个部分组成: DockerClient客户端 Docker Daemon守护进程 Docker Image镜像 DockerContainer容器 Docker 架构 Docker 使用 客户端-服务器 (C/S) 架构模式 ,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。 容器与镜像 的关系类似于面向对象编程中的 对象与类 。 容器技术简介 传统虚拟机,如 VMware , VisualBox 之类的需要 模拟整台机器包括硬件 ,每台虚拟机都 需要有自己的操作系统 。每一台虚拟机 包括应用 , 必要的二进制和库 ,以及一个 完整的用户操作系统 。 容器技术是 与宿主机共享硬件资源及操作系统 ,可以实现资源的动态分配。容器 包含应用和其所有的依赖包 ,但是 与其他容器共享内核 。 容器技术是实现操作系统虚拟化的一种途径,可以让您 在资源受到隔离的进程中运行应用程序及其依赖关系 。通过使用容器,我们可以轻松打包应用程序的代码

Kubernetes容器云平台建设实践

非 Y 不嫁゛ 提交于 2019-11-27 18:41:20
【51CTO.com原创稿件】Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。伴随着云原生技术的迅速崛起,如今Kubernetes 事实上已经成为应用容器化平台的标准,越来越受到企业的青睐,在生产中也应用的越来越广泛。 我们的容器平台建设从2016年开始,大致经历了探索预研、体系建设和平台落地这样三个阶段。 下面就从Kubernetes的网络、存储、集群管理和监控与运维几个方面来分享下我们容器云平台建设走过的历程,希望给大家一些思考和启发。 一、kubernetes网络 容器网络发展到现在,已经是双雄会的格局。双雄会其实指的就是Docker的CNM和Google、CoreOS、Kuberenetes主导的CNI。首先明确一点,CNM和CNI并不是网络实现,他们是网络规范和网络体系,从研发的角度他们就是一堆接口,你底层是用Flannel也好、用Calico也好,他们并不关心,CNM和CNI关心的是网络管理的问题。 网络需求调研发现,业务部门主要关注以下几点:1、容器网络与物理网络打通2、速度越快越好3、改动越少越好4、尽可能少的风险点。 容器的网络方案大体可分为协议栈层级、穿越形态、隔离方式这三种形式。 协议层级:二层比较好理解,在以前传统的机房或虚拟化场景中比较常见,就是基于桥接的 ARP+MAC 学习,它最大的缺陷是广播

Spring4概述

本小妞迷上赌 提交于 2019-11-27 18:17:10
spring4的介绍 1. 概述  Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 2. 使用Spring的好处 (1) 轻量级容器 :以集中的、自动化的方式进行应用程序对象创建和装配,负责对象创建和装配,管理对象生命周期,能组合成复杂的应用程序。Spring容器是非侵入式的(不需要依赖任何Spring特定类),而且完全采用POJOs进行开发,使应用程序更容易测试、更容易管理。而且核心jar包非常小,不需要依赖任何应用服务器,可以部署在任何环境(Java SE或Java EE)。 (2) AOP(Aspect Oriented Programming) :意思是面向切面编程,提供从另一个角度来考虑程序结构以完善面向对象编程(相对于OOP),即可以通过在编译期间、装载期间或运行期间实现在不修改源代码的情况下给程序动态添加功能的一种技术。通俗点说就是把可重用的功能提取出来,然后将这些通用功能在合适的时候织入到应用程序中;比如安全,日记记录等。 (3) 简单的数据库事务管理 :Spring支持可插入的事务管理支持

深入分析 Docker 镜像原理

天涯浪子 提交于 2019-11-27 18:04:39
摘要:近日, DaoCloud 软件工程师孙宏亮在 CSDN Container 微信群为大家带来了 Docker 镜像原理的深度分享,本次分享的重点是 Docker 镜像,分享的内容主要包含两个部分:1)Docker 镜像的基本知识;2)Dockerfile,Docker 镜像与 Docker 容器的关系。 嘉宾介绍:孙宏亮,硕士,浙江大学毕业,现为 DaoCloud 软件工程师,出版有《Docker 源码分析》,目前主要负责企业级容器云平台的研发工作。数年来一直从事云计算、PaaS 领域的研究与实践,是国内较早一批接触 Docker 的先行者,同时也是 Docker 技术的推广者。 第一部分:Docker 镜像的基本知识 1.1 什么是 Docker 镜像 从整体的角度来讲,一个完整的 Docker 镜像可以支撑一个 Docker 容器的运行,在 Docker 容器运行过程中主要提供文件系统视角。例如一个 ubuntu:14.04 的镜像,提供了一个基本的 ubuntu:14.04 的发行版,当然此镜像是不包含操作系统 Linux 内核的。 说到此,可能就需要注意一下,linux 内核和 ubuntu:14.04 Docker 镜像的区别了。传统虚拟机安装 ubuntu:14.04 会包含两部分,第一,某一个 Linux 内核的发行版本,比如 Linux 3.8 版本的内核