docker的网络、端口映射和容器间通信

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:

docker作为服务器内部的一个容器单位,对外的通信也就有了困难。这里提供了一些几个解决方案。

1、Docker独立IP

简单说就是配置独立的网桥,分配给docker IP

cd /etc/sysconfig/network-scripts/


vi ifcfg-eth0

DEVICE=eth0

BOOTPROTO=none

ONBOOT=yes

TYPE=Ethernet

BRIDGE="br0"

BOOTPROTO=static


vi ifcfg-br0

DEVICE="br0"

ONBOOT=yes

NM_CONTROLLED=no

BOOTPROTO=static

TYPE=bridge

IPADDR=192.168.1.165

NETMASK=255.255.255.0

GATEWAY=192.168.1.1

DNS=192.168.1.50


vi /etc/sysconfig/docker

other_args="-b=br0"


service docker start


service network restart

可能会报以下错误:

Shutting down interface eth0:                              [  OK  ]

Shutting down loopback interface:                          [  OK  ]

Bringing up loopback interface:                            [  OK  ]

Bringing up interface br0:  Determining if ip address 192.168.1.161 is already in use for device br0...

                                                           [  OK  ]

Bringing up interface eth0:  Error: Connection activation failed: Master connection not found or invalid

                                                           [FAILED]

解决方法:

此时,当前网卡也是可以通信的,但是通过网络管理工具修改IP之后,当前修改操作是不会生效的。那如何消除这个提示呢?

其实,问题的原因是RedHat自己开发的NetworkManager管理工具和/etc/sysconfig/network-scripts/ifcfg-ethx配置不同步造成的。如果要消除这个提示,请关闭NetworkManager服务即可:

chkconfig NetworkManager off  

service NetworkManager stop  

Stopping NetworkManager daemon:                            [  OK  ]

此时,再重新加载network服务即可:

service network restart


这样分配的IP是一个内网的IP,而且每次重启容器都会变化。


2、映射主机端口


在创建容器的时候直接将容器的某些端口映射到主机的端口上(尽量是不用的端口,省得端口冲突)


docker run -it --name test02 -p 10000:80 05c259583efe  /bin/bash


直接将容器的80口映射到主机10000上,访问主机10000的时,就能访问到容器了。


3、容器间通信

这里是用–link来指定通信的对象

   docker run --name=mysql_client2 --link=mysql_server:db -t -i kongxx/mysql_client /usr/bin/mysql -h db -u root -pletmein  


这里需要特别注意一下“–link=mysql_server:db”,这个参数就是告诉Docker容器需要使用“mysql_server”容器,并将其别名命名为db,这样在这两个容器里就可以使用“db”来作为提供mysql数据库服务的机器名。所以在最后启动参数里我们使用的是“/usr/bin/mysql -h db -u root -pletmein”来连接mysql数据库的。

本文转自    憬薇   51CTO博客,原文链接:http://blog.51cto.com/welcomeweb/1696137


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
28天前
|
安全 网络安全 网络虚拟化
【软件设计师备考 专题 】常用网络设备和各类通信设备(一)
【软件设计师备考 专题 】常用网络设备和各类通信设备
97 2
|
1天前
|
运维 前端开发 Devops
云效产品使用报错问题之流水线打包docker镜像时报网络代理有问题如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
4天前
|
存储 运维 监控
构建高效稳定的Docker容器监控体系
【4月更文挑战第18天】 在现代微服务架构中,Docker容器已成为部署和运行应用的标准环境。随之而来的挑战是如何有效监控这些容器的性能与健康状况,确保系统的稳定性和可靠性。本文将探讨构建一个高效稳定的Docker容器监控体系的关键技术和方法,包括日志管理、性能指标收集以及异常检测机制,旨在为运维人员提供实用的指导和建议。
10 0
|
13天前
|
Linux Docker 容器
docker 容器常用命令
docker 容器常用命令
12 0
|
13天前
|
Linux Shell 虚拟化
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
21 0
|
13天前
|
存储 Linux Shell
centos 部署docker容器 安装 、基本使用方法(一)
centos 部署docker容器 安装 、基本使用方法(一)
24 0
|
14天前
|
安全 网络安全 SDN
虚拟网络设备的真正使命:实现有控制的通信
虚拟网络设备确实提供了强大的网络隔离能力🛡️,但这种隔离本身并不是最终目的。实际上,更重要的是通过这种隔离能力实现有控制的通信🎛️,以满足特定的业务需求、安全要求和性能标准。换句话说,网络隔离是手段,而有控制的通信才是目的🎯。
虚拟网络设备的真正使命:实现有控制的通信
|
22天前
|
Kubernetes 网络协议 Docker
Docker 容器的DNS
Docker 容器的DNS
25 1
|
25天前
|
关系型数据库 MySQL Nacos
【深入浅出Nacos原理及调优】「实战开发专题」采用Docker容器进行部署和搭建Nacos服务以及“坑点”
【深入浅出Nacos原理及调优】「实战开发专题」采用Docker容器进行部署和搭建Nacos服务以及“坑点”
46 1
|
26天前
|
存储 运维 安全
云擎技术:通信网络单元定级备案指南
简介: 通信网络单元定级备案是指相关基础电信企业、增值电信企业要对本单位管理、运行的公用通信网和互联网及其各类信息系统进行单元划分,按照《通信网络安全防护管理办法》(工业和信息化部令第11号)的规定开展定级工作,并在工业和信息化部“通信网络安全防护管理系统”报送各单元的定级信息。
29 2