CN108932153A - 一种多Docker实例动态分配宿主机端口的方法和装置 - Google Patents
一种多Docker实例动态分配宿主机端口的方法和装置 Download PDFInfo
- Publication number
- CN108932153A CN108932153A CN201810737620.1A CN201810737620A CN108932153A CN 108932153 A CN108932153 A CN 108932153A CN 201810737620 A CN201810737620 A CN 201810737620A CN 108932153 A CN108932153 A CN 108932153A
- Authority
- CN
- China
- Prior art keywords
- service
- docker
- port
- examples
- host
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
Abstract
本发明公开了一种多Docker实例动态分配宿主机端口的方法和装置,通过添加一个统一的存储中心,用来存储服务和端口的映射关系,可以让服务方和调用方通过该接口访问到配置的端口号。使用者可以指定一个未经使用的端口,该端口号单独维护,并提供端口获取接口,服务方和调用方在需要的时候调用该接口就能找到服务和端口的隐射关系;服务方和调用方都不需要额外维护相同的端口列表。使用时,(1)先向存储中心写入服务和端口的映射关系;(2)Docker内的服务方访问存储中心获取服务对应的端口号;(3)调用方在调用服务前先从存储中心获取服务对应的端口号;(4)调用方根据服务端口号访问服务。本发明所述的方法和装置减少了Dockers实例的发布和维护成本。
Description
技术领域
本发明涉及计算机软件技术领域,尤其涉及一种多Docker实例动态分配宿主机端口的方法和装置。
背景技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。Docker创建容器时可以使用同主机的本地网络,默认外部网络都可以进行访问,因此Docker创建容器时可以使用同主机的本地网络,使得外部网络与Docker容器可以方便地进行相互访问。Docker容器是操作系统层面上构建的虚拟化技术,极大简化了应用布署的步骤和维护成本,使得开发者很容易构建弹性的云服务和微服务架构。在Docker实例内布署应用可能使用多个宿主机的端口,同时,一个宿主机也可以布署多个Docker实例。
一般,宿主机上的端口号范围1~65535,被宿主机和Docker实例共享使用。某个端口被占用后就不能再被其他应用或服务占用,不同Docker实例并不知道相互之间已经占用了哪些端口,当服务方占用某个端口后,调用方需要知道该端口来调用该服务,虽然可以在服务方和调用方之间维护一个端口列表,调用时查找该列表即可,但是当增加新的Docker实例、服务或应用时,只要需要占用新的端口,就必须更新一下服务方和调用方的端口列表,这便增加了Dockers实例的发布和维护成本。
发明内容
本发明是为了解决一个或多个宿主机内不同Docker实例如何动态分配端口的问题。
本发明所述的一种多Docker实例动态分配宿主机端口的方法,包括:
在至少一个宿主机上创建至少一个Docker实例;
在所述Docker实例中至少启动一个服务,并分配所述服务的端口号;
创建一个存储区域,所述存储区域用于存储所有所述宿主机上所有所述Docker实例上的所有所述服务及其端口号的映射关系;
当有新的Docker实例或新的服务被创建或启动时,或有Docker实例或服务被删除或停止时,所述映射关系被更新;
调用方访问某个服务时,先获取所述映射关系,再调用那个服务。
优选地,所述映射关系被更新期间,所述存储区域暂停或禁止所述调用方或其他所述宿主机读取所述映射关系。
优选地,所述存储区域被配置在一个所述宿主机上,或者,在所有所述宿主机的外部。
优选地,所述存储区域的访问接口为HTTP、HTTPS、FTP中的一种。
优选地,所述服务被配置为对应多个端口号。
本发明还提供了一种多Docker实例动态分配宿主机端口的装置,包括:
至少一个宿主机,所述宿主机用于运行Docker实例;
至少一个服务,所述服务运行于所述Docker实例,所述服务被配置对应的端口号;
存储单元,所述存储单元用于存储所有所述宿主机上所有所述Docker实例上的所有所述服务及其端口号的映射关系;所述映射关系被配置为当有新的Docker实例或新的服务被创建或启动时,或有Docker实例或服务被删除或停止时,所述映射关系被更新;
调用单元,所述调用单元被配置为访问某个服务时,先获取所述映射关系,再调用那个服务。
优选地,所述映射关系被更新期间,所述存储单元被配置为暂停或禁止所述调用单元或其他所述宿主机读取所述映射关系。
优选地,所述存储单元被配置在一个所述宿主机上,或者,在所有所述宿主机的外部。
优选地,所述存储单元的访问接口为HTTP、HTTPS、FTP中的一种。
优选地,所述服务被配置为对应多个端口号。
本发明所述的技术方案添加一个统一的存储中心,用来存储服务和端口的映射关系,提供访问接口,如http服务,可以让服务方和调用方通过该接口访问到配置的端口号。使用时,(1)先向存储中心写入服务和端口的映射关系;(2)Docker内的服务方访问存储中心获取服务对应的端口号;(3)调用方在调用服务前先从存储中心获取服务对应的端口号;(4)调用方根据服务端口号访问服务。
根据本发明所述的技术方案,用户可以指定一个未经使用的端口,该端口号单独维护,并提供端口获取接口,服务方和调用方在需要的时候调用该接口就能找到服务和端口的隐射关系;服务方和调用方都不需要额外维护相同的端口列表,减少维护成本。
附图说明
图1为本发明实施提供的一种较佳的方法流程图。
具体实施方式
下面结合附图和具体实施方式对本发明做进一步描述。
实施例1
如图1所示,在本发明的一个较佳实施例中,一台宿主机上布署了至少三个Dockers实例,其中一个Docker施例上至少运行着服务1和服务2,服务1对应的端口号是2222,服务2对应的端口号是2223;另一个Docker施例上至少运行着服务3和服务4,服务3对应的端口号是2224,服务4对应的端口号是2225;再一个Docker施例上至少运行着服务n和服务n+1,服务n对应的端口号是2422,服务n+1对应的端口号是2623;
同时,在这个宿主机的外部某个地方(也可以在宿主机内部),设置着一个存储中心,这个存储中心存储着服务和端口的对应列表,包括服务1对应的端口号是2222,服务2对应的端口号是2223,服务3对应的端口号是2224,服务4对应的端口号是2225,以及,服务n对应的端口号是2422,服务n+1对应的端口号是2623。
当宿主机上创建新的Docker实例时,宿主机从存储中心获取当前的服务和端口的映射关系,并在新创建Docker实例中启动新的服务时,分配一个未被占用的端口,然后将更新后的服务和端口列表写回存储中心。在存储中心这边,宿主机对服务和端口列表的读取和写回期间,暂停或禁止调用方或其他宿主机读取服务和端口的映射关系,以免造成调取错误。
当宿主机需要删除Docker实例时,宿主机从存储中心获取当前的服务和端口的映射关系,并删除相关的服务和端口的映射关系,释放所用端口,然后将更新后的服务和端口列表写回存储中心。同样地,在存储中心这边,宿主机对服务和端口列表的读取和写回期间,暂停或禁止调用方或其他宿主机读取服务和端口的映射关系,以免造成调取错误。
当调用方需要调用某个服务时,需要先访问存储中心,获取当前的服务和端口的映射关系,然后再通过所获取的映射关系找到宿主机的端口,最后再通过那个端口获取宿主机上某个Docker实例上的服务。
宿主机和存储中心之间的访问接口可以是HTTP/HTTPS/FTP或其他的通讯协议。
在端口资源充足的情况下,为了平衡多个服务之间的负载,可以针对某些负载大的服务分配多个端口号。
实施例2
在本发明的另一个较佳实施例中,一种多Docker实例动态分配宿主机端口的装置,包括一个宿主机,所述宿主机用于运行Docker实例;以及一个服务,所述服务运行于所述Docker实例,所述服务被配置对应的端口号,如3333;以及存储单元,所述存储单元用于存储所有所述宿主机上所有所述Docker实例上的所有所述服务及其端口号的映射关系;所述映射关系被配置为当有新的Docker实例或新的服务被创建或启动时,或有Docker实例或服务被删除或停止时,所述映射关系被更新;和调用单元,所述调用单元被配置为访问某个服务时,先获取所述映射关系,再调用那个服务。
所述映射关系被更新期间,所述存储单元被配置为暂停或禁止所述调用单元或其他所述宿主机读取所述映射关系。
所述存储单元被配置在一个所述宿主机上,或者,在所有所述宿主机的外部。
宿主机和存储中心之间的访问接口可以是HTTP/HTTPS/FTP或其他的通讯协议。
在端口资源充足的情况下,为了平衡多个服务之间的负载,可以针对某些负载大的服务分配多个端口号。
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
Claims (10)
1.一种多Docker实例动态分配宿主机端口的方法,其特征在于,包括:
在至少一个宿主机上创建至少一个Docker实例;
在所述Docker实例中至少启动一个服务,并分配所述服务的端口号;
创建一个存储区域,所述存储区域用于存储所有所述宿主机上所有所述Docker实例上的所有所述服务及其端口号的映射关系;
当有新的Docker实例或新的服务被创建或启动时,或有Docker实例或服务被删除或停止时,所述映射关系被更新;
调用方访问某个服务时,先获取所述映射关系,再调用那个服务。
2.如权利要求1所述的多Docker实例动态分配宿主机端口的方法,其特征在于,所述映射关系被更新期间,所述存储区域暂停或禁止所述调用方或其他所述宿主机读取所述映射关系。
3.如权利要求1所述的多Docker实例动态分配宿主机端口的方法,其特征在于,所述存储区域被配置在一个所述宿主机上,或者,在所有所述宿主机的外部。
4.如权利要求1所述的多Docker实例动态分配宿主机端口的方法,其特征在于,所述存储区域的访问接口为HTTP、HTTPS、FTP中的一种。
5.如权利要求1所述的多Docker实例动态分配宿主机端口的方法,其特征在于,所述服务被配置为对应多个端口号。
6.一种多Docker实例动态分配宿主机端口的装置,其特征在于,包括:
至少一个宿主机,所述宿主机用于运行Docker实例;
至少一个服务,所述服务运行于所述Docker实例,所述服务被配置对应的端口号;
存储单元,所述存储单元用于存储所有所述宿主机上所有所述Docker实例上的所有所述服务及其端口号的映射关系;所述映射关系被配置为当有新的Docker实例或新的服务被创建或启动时,或有Docker实例或服务被删除或停止时,所述映射关系被更新;
调用单元,所述调用单元被配置为访问某个服务时,先获取所述映射关系,再调用那个服务。
7.如权利要求6所述的多Docker实例动态分配宿主机端口的装置,其特征在于,所述映射关系被更新期间,所述存储单元被配置为暂停或禁止所述调用单元或其他所述宿主机读取所述映射关系。
8.如权利要求6所述的多Docker实例动态分配宿主机端口的装置,其特征在于,所述存储单元被配置在一个所述宿主机上,或者,在所有所述宿主机的外部。
9.如权利要求6所述的多Docker实例动态分配宿主机端口的装置,其特征在于,所述存储单元的访问接口为HTTP、HTTPS、FTP中的一种。
10.如权利要求6所述的多Docker实例动态分配宿主机端口的装置,其特征在于,所述服务被配置为对应多个端口号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810737620.1A CN108932153A (zh) | 2018-07-06 | 2018-07-06 | 一种多Docker实例动态分配宿主机端口的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810737620.1A CN108932153A (zh) | 2018-07-06 | 2018-07-06 | 一种多Docker实例动态分配宿主机端口的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108932153A true CN108932153A (zh) | 2018-12-04 |
Family
ID=64447765
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810737620.1A Pending CN108932153A (zh) | 2018-07-06 | 2018-07-06 | 一种多Docker实例动态分配宿主机端口的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108932153A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109842559A (zh) * | 2018-12-28 | 2019-06-04 | 中兴通讯股份有限公司 | 一种网络通信方法及系统 |
CN110427194A (zh) * | 2019-06-18 | 2019-11-08 | 平安科技(深圳)有限公司 | 容器应用删除方法、装置、计算机设备及存储介质 |
CN114138464A (zh) * | 2021-11-10 | 2022-03-04 | 浪潮卓数大数据产业发展有限公司 | 基于容器的端口分配方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100049931A1 (en) * | 2008-08-20 | 2010-02-25 | Jacobson Michael B | Copying Logical Disk Mappings Between Arrays |
CN106130990A (zh) * | 2016-06-29 | 2016-11-16 | 中国联合网络通信集团有限公司 | 容器访问的控制方法及装置 |
CN106301889A (zh) * | 2016-07-28 | 2017-01-04 | Tcl移动通信科技(宁波)有限公司 | 一种端口号快速设置方法及系统 |
CN106445585A (zh) * | 2016-08-30 | 2017-02-22 | 中国民生银行股份有限公司 | 基于容器技术的应用部署方法和系统 |
CN107105061A (zh) * | 2017-05-31 | 2017-08-29 | 北京中电普华信息技术有限公司 | 一种服务注册方法及装置 |
-
2018
- 2018-07-06 CN CN201810737620.1A patent/CN108932153A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100049931A1 (en) * | 2008-08-20 | 2010-02-25 | Jacobson Michael B | Copying Logical Disk Mappings Between Arrays |
CN106130990A (zh) * | 2016-06-29 | 2016-11-16 | 中国联合网络通信集团有限公司 | 容器访问的控制方法及装置 |
CN106301889A (zh) * | 2016-07-28 | 2017-01-04 | Tcl移动通信科技(宁波)有限公司 | 一种端口号快速设置方法及系统 |
CN106445585A (zh) * | 2016-08-30 | 2017-02-22 | 中国民生银行股份有限公司 | 基于容器技术的应用部署方法和系统 |
CN107105061A (zh) * | 2017-05-31 | 2017-08-29 | 北京中电普华信息技术有限公司 | 一种服务注册方法及装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109842559A (zh) * | 2018-12-28 | 2019-06-04 | 中兴通讯股份有限公司 | 一种网络通信方法及系统 |
WO2020135856A1 (zh) * | 2018-12-28 | 2020-07-02 | 中兴通讯股份有限公司 | 一种网络通信方法及系统 |
CN110427194A (zh) * | 2019-06-18 | 2019-11-08 | 平安科技(深圳)有限公司 | 容器应用删除方法、装置、计算机设备及存储介质 |
CN114138464A (zh) * | 2021-11-10 | 2022-03-04 | 浪潮卓数大数据产业发展有限公司 | 基于容器的端口分配方法及系统 |
CN114138464B (zh) * | 2021-11-10 | 2023-10-31 | 浪潮卓数大数据产业发展有限公司 | 基于容器的端口分配方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10877794B2 (en) | Virtual machine morphing for heterogeneous migration environments | |
US11372802B2 (en) | Virtual RDMA switching for containerized applications | |
CN104331375B (zh) | 共享虚拟化资源池环境下的共享虚拟资源管理方法和装置 | |
EP3432549B1 (en) | Method and apparatus for processing user requests | |
US9571374B2 (en) | Dynamically allocating compute nodes among cloud groups based on priority and policies | |
CN108932153A (zh) | 一种多Docker实例动态分配宿主机端口的方法和装置 | |
CN115269184B (zh) | 函数即服务(faas)执行分配器 | |
US8510815B2 (en) | Virtual computer system, access control method and communication device for the same | |
WO2017084276A1 (zh) | 用于容器部署的主机调度方法及系统 | |
JP2019528005A (ja) | クラウドコンピューティングシステムにおいて仮想マシンが物理サーバにアクセスするための方法、装置、およびシステム | |
CN111796908B (zh) | 一种资源自动弹性伸缩的系统、方法及云平台 | |
US20140201365A1 (en) | Implementing a private network isolated from a user network for virtual machine deployment and migration and for monitoring and managing the cloud environment | |
US20130191543A1 (en) | Performing maintenance operations on cloud computing node without requiring to stop all virtual machines in the node | |
US11489814B1 (en) | Customized domain name resolution for virtual private clouds | |
CN109995552B (zh) | Vnf服务实例化方法及装置 | |
CN109491725A (zh) | 应用程序可交互多开方法和系统、存储介质、电子设备 | |
CN110377419A (zh) | 一种服务器调用方法、装置和电子设备 | |
US8873527B2 (en) | System and method for managing routers and communication interfaces on a computing device | |
CN109857464B (zh) | 用于平台部署与操作移动操作系统的系统及其方法 | |
CN113709810A (zh) | 一种网络服务质量的配置方法、设备和介质 | |
WO2019134222A1 (zh) | Docker镜像库文件存储方法、终端、设备以及存储介质 | |
US7669202B1 (en) | Resource management | |
JP2022087808A (ja) | ストレージ・エリア・ネットワーク輻輳のエンドポイント通知を行う方法、システム、およびコンピュータ・プログラム | |
CN112889247B (zh) | Vnf服务实例化方法及装置 | |
CN110347473B (zh) | 一种跨数据中心分布的虚拟化网元虚拟机分配方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181204 |
|
RJ01 | Rejection of invention patent application after publication |