服务器 > 服务器 > 云虚拟主机

Docker 端口映射与容器互联的实现

26人参与 2025-02-14 云虚拟主机

前言

docker的端口映射和容器互联是构建和管理微服务架构时重要的概念。这些功能使你能够可以将服务暴露给外部世界,并让容器间可以通过网络通信。下面将详细介绍这两个概念以及如何在docker中实现。

docker端口映射

端口映射指的是将容器的端口映射到主机的端口,使得外部用户能够通过主机的ip地址和端口访问容器内运行的服务。

启动容器并进行端口映射

使用-p标志可以在启动容器时进行端口映射。语法如下:

docker run -p <host_port>:<container_port> <image_name>

示例

假设我们有一个运行在8080端口的web应用,并希望将其映射到主机的8080端口。

docker run -d -p 8080:8080 my-web-app

docker容器互联

容器互联指的是多个容器之间可以互相访问。docker为容器之间的通信提供了网络支持。

创建自定义网络

使用自定义网络可以使容器之间更加安全和便捷地进行通信。创建内部网络的命令如下:

docker network create my-network

 启动容器并连接到网络

启动容器并将其连接到创建的网络:

docker run -d --name web --network my-network -p 8080:8080 my-web-app
docker run -d --name db --network my-network my-database-image

此处,--network标志指定容器要连接的网络。

在容器间通信

一旦容器在同一网络中,它们就可以通过容器名称访问彼此的服务。例如,如果web容器需要连接到名为db的数据库容器,它可以通过db主机名与之通信(例如使用db:5432来连接到数据库服务)。

示例:创建一个web应用和数据库的互联

假设我们有一个简单的web应用,该应用需要连接到postgresql数据库。

创建自定义网络

docker network create my-network

运行数据库容器

docker run -d --name db --network my-network -e postgres_password=mysecretpassword postgres

运行web应用容器

docker run -d --name web --network my-network -p 8080:8080 my-web-app

在web应用中连接数据库

在web应用的配置文件中,你可以使用db作为数据库主机名进行连接,例如:

import psycopg2

conn = psycopg2.connect(
    dbname='postgres',
    user='postgres',
    password='mysecretpassword',
    host='db',  # 使用容器名称
    port=5432
)

查看网络和容器

可以使用以下命令查看网络中的容器:

docker network inspect my-network

docker ps -a

小结

以上介绍了docker中的端口映射和容器互联的基本概念与实践。通过端口映射,可以将容器服务暴露给主机,供外部访问;而通过自定义网络与容器互联,可以安全高效地进行容器间的通信。这些特性使得docker在开发、测试和生产环境中成为管理应用服务的强大工具。

补充

docker 的网络原理

docker的网络功能是其核心特性之一,允许容器之间以及容器与外部之间进行通信。docker的网络原理包括多个网络模式、网络驱动程序和网络的配置管理。下面将详细介绍docker网络的原理及各个组成部分。

docker网络模型

docker网络模型主要包括以下几种网络类型:

网络驱动程序

docker提供了多种网络驱动程序来支持不同的网络接口:

docker网络的工作机制

网络命名空间

每个docker容器在启动时会创建一个独立的网络命名空间。命名空间对容器的网络资源进行隔离,确保不同容器之间的网络不会相互干扰。每个容器都有自己的网络接口、ip地址和路由表。

假设路由和dns

网络连接

docker的网络管理

docker cli提供了一组命令用于网络管理:

# 创建网络:
docker network create my-network

# 查看网络列表
docker network ls

# 查看特定网络的详细信息
docker network inspect my-network

# 删除网络
docker network rm my-network

到此这篇关于docker 端口映射与容器互联的实现的文章就介绍到这了,更多相关docker 端口映射与容器互联内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

如何在一台服务器上使用docker运行kafka集群

02-14

docker run命令的使用小结

02-14

Docker集成CI/CD的项目实践

02-14

Docker中安装和配置Apache Pulsar实现

02-14

docker目录挂载的新语法小结

02-14

如何使用Docker部署最新版JupyterHub

02-14

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论