端口映射与容器互联

news2024/12/24 21:26:11

1.  端口映射实现访问容器:

        在启动容器的时候,如果不指定对应的参数,在容器外部是无法通过网络来访问容器内部的网络应用和服务的。

        当容器中运行一些网络应用,要让外部访问这些应用时,可以通过-p或-P参数来指定饼口映射。当使用"- P"(大写P)标记时,Docker会随机映射一个端口到内部容器开放的网络端口(端口范围在Linux系统使用的端口之外,一般都过万)∶

[root@node1 ~]# docker run -d --name web1 -P nginx:latest

##查看随即映射的端口:
[root@node1 ~]# docker port web1
80/tcp -> 0.0.0.0:49153
80/tcp -> :::49153

" -p"(小写p):可以指定要映射的端口,并且在一个指定的端口上只可以绑定一个容器。支持的格式有∶" IP∶HostPort∶ContainerPort "," IP::ContainerPort " ," HostPort:ContainerPort "。

##添加一个ip地址
[root@node1 ~]# nmcli con mod eth0 +ipv4.address 192.168.188.124/24

[root@node1 ~]# nmcli con up eth0

##使用" IP∶HostPort∶ContainerPort "方式指定端口实现端口映射:
[root@node1 ~]# docker run -d --name web2 -p 192.168.188.124:81:80 nginx

##使用" IP∶∶ContainerPort "方式指定端口实现端口映射,该方式会在指定地址的随机一个端口映射:
[root@node1 ~]# docker run -d --name web3 -p 192.168.188.124::80 nginx

#查看容器web3端口:
[root@node1 ~]# docker port web3
80/tcp -> 192.168.188.123:49163

##查看端口映射
[root@node1 ~]# iptables -t nat -vnL

Chain DOCKER (2 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 RETURN     all  --  docker0 *       0.0.0.0/0            0.0.0.0/0           
    0     0 DNAT       tcp  --  !docker0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:49153 to:172.17.0.3:80
    0     0 DNAT       tcp  --  !docker0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80 to:172.17.0.10:80
    0     0 DNAT       tcp  --  !docker0 *       0.0.0.0/0            192.168.188.123      tcp dpt:49163 to:172.17.0.11:80
    0     0 DNAT       tcp  --  !docker0 *       0.0.0.0/0            192.168.188.123      tcp dpt:81 to:172.17.0.12:80

2.  容器互联:使用" --link "参数可以让容器之间安全地进行交互。例如:

        1>.  创建一个数据库容器:

[root@node1 ~]# docker run -d --name mysql --env MYSQL_ROOT_PASSWORD='123456'

"--env":表示指定参数
"MYSQL_ROOT_PASSWORD":表示指定数据库密码

        2>.  创建一个discuz容器关联数据库容器:

[root@docker ~]# docker run -d -p 80:80 -name discuz --link mysql:db tencentci/discuz

其中:--link参数的格式为∶--link name∶alias,其中name是要连接的容器名称,alias是这个连接的
别名。

     Docker相当于在两个互联的容器之间创建了一个虚拟通道,而不用映射它们的端口到宿主机上。在启动mysql容器的时候并没有使用-p或者-P参数, 从而避免了暴露数据库服务端口到外部网络上。

          3>.  通过浏览去访问" 192.168.188.111 "访问并安装论坛:

 

 

 

 Docker通过两种方式为容器公开连接信息∶

        1>.  更新环境变量:使用env命令来查看web容器的环境变量。其中"DB_"开头的环境变量是提供web容器连接数据库容器使用的,前缀采用大写的连接别名。

[root@node1 ~]# docker run --rm -p 88:80 --link mysql:db --name discuz tencentci/discuz env

DB_ENV_MARIADB_MAJOR=10.6
PHP_EXTRA_CONFIGURE_ARGS=--with-apxs2 --disable-cgi
APACHE_CONFDIR=/etc/apache2
HOSTNAME=cbe01a1b1c82
DB_PORT=tcp://172.17.0.2:3306
PHP_INI_DIR=/usr/local/etc/php
DB_PORT_3306_TCP=tcp://172.17.0.2:3306
PHP_EXTRA_BUILD_DEPS=apache2-dev
HOME=/root
DB_NAME=/discuz/db
PHP_LDFLAGS=-Wl,-O1 -Wl,--hash-style=both -pie
PHP_CFLAGS=-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
PHP_MD5=
PHP_VERSION=7.3.12
GPG_KEYS=CBAF69F173A0FEA4B537F470D66C9593118BCCB6 F38252826ACD957EF380D39F2F7956BC5DA04B5D
PHP_CPPFLAGS=-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
PHP_ASC_URL=https://www.php.net/get/php-7.3.12.tar.xz.asc/from/this/mirror
DB_ENV_MARIADB_VERSION=1:10.6.5+maria~focal
PHP_URL=https://www.php.net/get/php-7.3.12.tar.xz/from/this/mirror
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
DZ_URL=https://www.discuz.net/daily/?dl=DZX-SC_UTF8-v3.5-202102010500-34d24c9b.zip
DB_PORT_3306_TCP_ADDR=172.17.0.2
DZ_WWW_ROOT=/var/www/html
DB_ENV_MYSQL_ROOT_PASSWORD=123456
PHPIZE_DEPS=autoconf 		dpkg-dev 		file 		g++ 		gcc 		libc-dev 	     make 		pkg-config 		re2c
PWD=/var/www/html
DB_ENV_GOSU_VERSION=1.14
PHP_SHA256=aafe5e9861ad828860c6af8c88cdc1488314785962328eb1783607c1fdd855df
DB_PORT_3306_TCP_PORT=3306
APACHE_ENVVARS=/etc/apache2/envvars
DB_PORT_3306_TCP_PROTO=tcp

        2>.  自动更新/etc/hosts文件:Docker自动添加host信息到父容器的/etc/hosts文件中。

[root@node1 ~]# docker run -it -p 88:80 --link mysql:db --name discuz tencentci/discuz /bin/bash

root@0ea422e21f40:/var/www/html# cat /etc/hosts
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
ff00::0	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
172.17.0.2	db e74c62c3881f mysql
172.17.0.13	0ea422e21f40

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/32183.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

总结了几个做用户体验设计的原则,分享给需要的朋友

近一年来,Figma它可以说是体验设计领域最受欢迎的工具。最近,我开始频繁地工作。Axure9.0和Figma切换使用,深刻感受到设计细节带来的体验差异化。今天,通过一些细节和亮点,总结了工具软件体验设计的几个原则。 ​一、效…

HTTP服务器

HTTP服务器 1. 项目背景和技术特点 实现目的 从移动端到浏览器,HTTP 协议无疑是打开互联网应用窗口的重要协议,其在网络应用层中的地位不可撼动,是能准确区分前后台的重要协议。 完善对HTTP协议的理论学习,从零开始完成WEB服务器…

万字string类总结

目录 一、string类的介绍 二、string类的常用接口 1、构造函数 2. string类对象的容量操作 3. string类对象的访问及遍历操作 4. string类对象的修改操作 (重点) 5. string类非成员函数 6. vs和g下string结构的说明 三、string类的模拟 1. 浅拷…

c++智能指针(raii)

目录 1.智能指针的作用 2.智能指针带来的问题与挑战 3.三种不同的智能指针 4.auto_ptr 5.unique_ptr 6.shared_ptr 7.weak_ptr;相互引用 8.总结 1.智能指针的作用 以c的异常处理为例看看throw catch用法。有时,一个用new开出的空间用完还没delete…

[附源码]java毕业设计壹家吃货店网站

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【C语言】学数据结构前必学的结构体struct详细

佛祖说,他可以满足程序猿一个愿望。程序猿许愿有生之年写出一个没有bug的程序,然后他得到了永生。 目录 1、结构体的声明与定义 1.1结构体是什么? 1.2为什么要有结构? 1.3结构体的声明 1.4结构体成员类型 1.5结构体变量定义…

由CPU高负载引发内核探索之旅

导语:STGW(腾讯云CLB)在腾讯云和自研业务中承担多种网络协议接入、请求加速、流量转发等功能,有着业务数量庞大、接入形式多样、流量规模巨大的特点,给产研团队带来了各种挑战,经常要深入剖析各种疑难杂症。…

Win7纯净版系统镜像64位介绍

Win7系统是一款非常经典的系统,这里想为大家介绍的是Win7纯净版系统镜像64位,主要特点就是非常稳定,运行流畅、占用CPU和内存都非常少。系统非常纯净,使用此系统,可让你的电脑焕然一新! 一、系统稳定 1、采…

科普读书会丨《被讨厌的勇气》:愤怒不是目的,是一种工具

Hello, 这里是壹脑云读书圈,我是领读人小美~ 《被讨厌的勇气》读书会目前已经进行了两期,成员们也共同探讨了其中第一夜和第二夜的内容。每个人都有被情绪困扰的时候,而阿德勒心理学告诉我们,即使是负面情绪也不可怕…

WebRTC 服务器搭建篇

First off All 服务器环境:采用的阿里云国内服务器,系统: Ubuntu 16.04 64位 。 各个服务所需要的编译环境图: 各个服务器对应所需编译平台 1.第一步,先更新下命令行工具,工欲善其身必先利其器&#xff…

推荐一款图表功能强大的可视化报表工具

企业信息化建设,大量的数据需要经过分析才能挖掘价值。因此数据的价值越来越受到大家的重视,大数据分析工具逐渐成为企业运营必不可少的辅助工具。俗话说工人要想做好事,首先要磨利工具,拥有一个好用的大数据分析工具尤为重要&…

numpy生成0和1数组方法、从已有数组生成新数组方法、生成固定范围内数组、生成随机数组、绘制指定均值和标准差正态分布图、均匀分布图绘制

一、生成0和1数组 np.ones(shape, dtype):shape为要生成的数组的维度,dtype为数组内元素类型np.ones_like(a, dtype):生成与a同维度的数组np.zeros(shape, dtype)np.zeros_like(a, dtype) 代码如下 one np.ones([3,4]) one --------------…

机器学习——支持向量机与集成学习

支持向量机与集成学习 文章目录支持向量机与集成学习支持向量机的基本原理线性可分支持向量常用核函数集成学习概述集成学习的两种方式集成学习的基本类型弱学习其合成方式AdaBoost算法训练过程简例一类按监督学习方式对数据进行二元分类的广义线性分类器 文章目录支持向量机与…

免费不限时长的语音转文字软件——Word365

适用场景 想将语音转化成文字。 这里的语音可以是实时输入,也可以是已有音、视频转换成文字。 后者的操作比前者多一步操作。 1.实时语音转文字 可以直接打开Word365,【开始】选项卡中的【听写】功能。 打开前修改一下设置,语言可以根据需…

nmap之nse脚本简单学习

nmap之nse脚本简单学习 环境:centos8 nmap安装 yum -y install nmap -- 版本 [rootqingchen /]# nmap -version Nmap version 7.70 ( https://nmap.org )脚本入门学习 cd /usr/share/nmap [rootqingchen nmap]# ls nmap.dtd nmap-mac-prefixes nmap-os-db …

300dpi等于多少分辨率?如何给图片修改分辨率大小?

​图片是我们在生活中经常需要接触使用到的东西,无论是工作中还是生活中都离不开图片,在使用图片时我们会接触到“图片分辨率”、“dpi”这个概念,那么到底什么是图片分辨率?300DPI等于多少分辨率?如何给图片修改分辨率…

Lidar和IMU(INS)外参标定----常用开源项目总结

写在前面:博主主要关注的是自动驾驶中Lidar和RTK组合导航设备的标定,大部分的开源项目都把其转化为Lidar和IMU的标定过程。 1. ETH的lidar_align (Github)A simple method for finding the extrinsic calibration between a 3D lidar and a 6-dof pose …

推特精准客户开发手册

你要在巷子里营造出热闹的气氛,人为把热度炒起来,虚假的繁荣是做给别人看的,是用来吸引别人而不是说你自己沉迷于此,而“虚假的繁荣”又是个怎么的虚法呢?它需要外界看起来是真的。 可是问题来了,我们都知…

NTP时钟系统为制造业信息化产业提供守时保障

随着科学技术的发展,工业信息化高速迈进,高精度的同步时钟系统显得尤为重要。利用网络同步时钟系统技术对各个设备之间进行时间统一,对制造业和信息化产业提高产能,让生产力更高效提供守时保障。NTP时钟系统是基于网络时间协议而衍…

你问我答 | 解决关于入托的8个疑问

很多新手家长对于送孩子入托有很多顾虑,这次我们通过“你问我答”让家长更了解托班的意义。 Q:不好好吃饭的小宝宝,适合入托吗? A:适合。吃饭是孩子生活能力培养的重要部分,大部分孩子在入托前&#xff0c…