百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

Docker入门与实践:Docker中的网络功能简介

bigegpt 2024-09-14 00:11 27 浏览

Docker入门与实践:Dcoker中的网络功能简介

Docker提供网络服务的方法包括两种:

  • 通过外部访问docker容器的方式;
  • 通过Docker容器间互联的方式。

一、外部访问docker容器

在docker容器中可以运行一些网络应用,外部想要访问docker容器内的应用,可以通过-p-P选项来指定端口映射,两个选项的区别如下所示:

  • (1)-p:指定要映射的端口,通过该端口绑定一个docker容器;
  • (2)-P:docker会随机映射一个范围的端口到内部容器开放的网络端口。其中这个随机的端口范围可以在/proc/sys/net/ipv4/ip_local_port_range文件中查看,如下图所示,我的电脑中的端口范围为32768-60999

1.1 使用-P选项外部访问docker容器

如下图所示,使用docker run -d -P training/webapp python app.py命令创建一个可以通过外部网络访问的docker容器;然后使用docker container ls -l查看容器的端口信息。这样就创建了一个本地主机49159端口映射到容器5000端口的容器。

1.2 使用-p选项外部访问docker容器

如上所述,-p指定特定的端口绑定到一个容器上,其支持的格式有:

  • hostPort:containerPort:映射本地特定端口所有ip地址到容器的特定端口;
  • ip:hostPort:containerPort:映射本地特定端口的特定ip地址到容器的特定端口;
  • ip::containerPort:映射本地主机特定ip地址的随机端口到容器特定的端口;

其中,上面的hostPort表示主机端口或本地端口;containerPort表示容器端口;ip表示网址,下面分别罗列这三种格式的使用方法:

1、映射本地特定端口所有ip地址到容器的特定端口

使用hostPort:containerPort格式可以将本地主机特定端口映射到容器的特定端口,以实现外部访问容器的目的,指令如下所示:

docker run -d -p 5000:5000 training/webapp python app.py

如下图所示,默认会绑定本地接口5000上所有ip地址到容器的5000端口上。

上图中的0.0.0.0:5000表示本地主机5000端口上的所有ip地址。

2、映射本地特定端口的特定ip地址到容器的特定端口

使用ip:hostPort:containerPort格式可以将本地主机的特定端口的特定ip地址映射到容器的特定端口,以实现外部访问容器的目的,比如这里的ip127.0.0.1,指令如下所示:

docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py

如下图所示,默认会绑定本地端口5000127.0.0.1的ip地址到容器的5000端口上。

3、映射本地主机特定ip地址的随机端口到容器特定的端口

使用ip::containerPort格式可以将本地主机特定的ip地址的随机端口到容器的特定端口,以实现外部访问容器的目的,比如这里的ip127.0.0.1,指令如下所示:

docker run -d -p 127.0.0.1::5000 training/webapp python app.py

如下图所示,绑定本地主机随机端口上的127.0.0.1ip地址到容器的5000端口上,这里的随机分配的主机端口为49154

注意:-p可以多次使用来绑定多个端口,指令如下所示:

docker run -d \
    -p 5000:5000 \
    -p 3000:80 \
    training/webapp \
    python app.py

执行完上面指令,使用docker container ls命令就可以看出绑定了两组端口:

二、Docker容器的互联

Docker容器不仅可以通过网络与本地主机互联,容器还可以通过docker自定义的网络来实现容器间互联。

2.1 自定义docker网络的构建

构建自定义docker网络的指令如下所示:

docker network create -d bridge My_Net

其中,-d指定了docker的网络类型为bridge类型,并自定义docker网络的名称为My_Net。如下图所示,可以使用docker network ls查看系统的docker网络:

2.2 Docker容器的网络连接

这里演示两个容器通过上面创建的docker网络My_Net,进行互联的过程:

1、创建连接docker网络的容器

首先,启动或创建一个busybox_1容器并连接到上面创建的My_Netdocker网络,指令如下所示:

docker run -it --rm \
    --name busybox_1 \
    --network My_Net busybox sh

如下如所示,由于本地没有busybox:latest镜像,所以首先从远程镜像仓库拉取镜像,再创建连接的docker网络My_Net的容器busybox_2

然后,再打开一个终端,使用同样的方法创建一个busybox_2容器并连接到My_Netdocker网络:

docker run -it --rm \
    --name busybox_2 \
    --network My_Net busybox sh

再打开一个终端,如下图所示,使用docker container ls查看容器信息:

2、测试通过docker网络互联的容器

通过ping来测试busybox_1容器和busybox_2容器的互联:

如下图所示,在busybox_2容器内输入ping busybox_1,即用ping指令来测试busybox_2容器连接busybox_1的情况,到如下图的结果则表示两个容器互联成功:

相关推荐

当Frida来“敲”门(frida是什么)

0x1渗透测试瓶颈目前,碰到越来越多的大客户都会将核心资产业务集中在统一的APP上,或者对自己比较重要的APP,如自己的主业务,办公APP进行加壳,流量加密,投入了很多精力在移动端的防护上。而现在挖...

服务端性能测试实战3-性能测试脚本开发

前言在前面的两篇文章中,我们分别介绍了性能测试的理论知识以及性能测试计划制定,本篇文章将重点介绍性能测试脚本开发。脚本开发将分为两个阶段:阶段一:了解各个接口的入参、出参,使用Python代码模拟前端...

Springboot整合Apache Ftpserver拓展功能及业务讲解(三)

今日分享每天分享技术实战干货,技术在于积累和收藏,希望可以帮助到您,同时也希望获得您的支持和关注。架构开源地址:https://gitee.com/msxyspringboot整合Ftpserver参...

Linux和Windows下:Python Crypto模块安装方式区别

一、Linux环境下:fromCrypto.SignatureimportPKCS1_v1_5如果导包报错:ImportError:Nomodulenamed'Crypt...

Python 3 加密简介(python des加密解密)

Python3的标准库中是没多少用来解决加密的,不过却有用于处理哈希的库。在这里我们会对其进行一个简单的介绍,但重点会放在两个第三方的软件包:PyCrypto和cryptography上,我...

怎样从零开始编译一个魔兽世界开源服务端Windows

第二章:编译和安装我是艾西,上期我们讲述到编译一个魔兽世界开源服务端环境准备,那么今天跟大家聊聊怎么编译和安装我们直接进入正题(上一章没有看到的小伙伴可以点我主页查看)编译服务端:在D盘新建一个文件夹...

附1-Conda部署安装及基本使用(conda安装教程)

Windows环境安装安装介质下载下载地址:https://www.anaconda.com/products/individual安装Anaconda安装时,选择自定义安装,选择自定义安装路径:配置...

如何配置全世界最小的 MySQL 服务器

配置全世界最小的MySQL服务器——如何在一块IntelEdison为控制板上安装一个MySQL服务器。介绍在我最近的一篇博文中,物联网,消息以及MySQL,我展示了如果Partic...

如何使用Github Action来自动化编译PolarDB-PG数据库

随着PolarDB在国产数据库领域荣膺桂冠并持续获得广泛认可,越来越多的学生和技术爱好者开始关注并涉足这款由阿里巴巴集团倾力打造且性能卓越的关系型云原生数据库。有很多同学想要上手尝试,却卡在了编译数据...

面向NDK开发者的Android 7.0变更(ndk android.mk)

订阅Google官方微信公众号:谷歌开发者。与谷歌一起创造未来!受Android平台其他改进的影响,为了方便加载本机代码,AndroidM和N中的动态链接器对编写整洁且跨平台兼容的本机...

信创改造--人大金仓(Kingbase)数据库安装、备份恢复的问题纪要

问题一:在安装KingbaseES时,安装用户对于安装路径需有“读”、“写”、“执行”的权限。在Linux系统中,需要以非root用户执行安装程序,且该用户要有标准的home目录,您可...

OpenSSH 安全漏洞,修补操作一手掌握

1.漏洞概述近日,国家信息安全漏洞库(CNNVD)收到关于OpenSSH安全漏洞(CNNVD-202407-017、CVE-2024-6387)情况的报送。攻击者可以利用该漏洞在无需认证的情况下,通...

Linux:lsof命令详解(linux lsof命令详解)

介绍欢迎来到这篇博客。在这篇博客中,我们将学习Unix/Linux系统上的lsof命令行工具。命令行工具是您使用CLI(命令行界面)而不是GUI(图形用户界面)运行的程序或工具。lsoflsof代表&...

幻隐说固态第一期:固态硬盘接口类别

前排声明所有信息来源于网络收集,如有错误请评论区指出更正。废话不多说,目前固态硬盘接口按速度由慢到快分有这几类:SATA、mSATA、SATAExpress、PCI-E、m.2、u.2。下面我们来...

新品轰炸 影驰SSD多款产品登Computex

分享泡泡网SSD固态硬盘频道6月6日台北电脑展作为全球第二、亚洲最大的3C/IT产业链专业展,吸引了众多IT厂商和全球各地媒体的热烈关注,全球存储新势力—影驰,也积极参与其中,为广大玩家朋友带来了...