Docker 网络模式及配置方式

下面是针对“Docker 网络模式及配置方式”的详细攻略。

什么是 Docker 网络模式?

Docker 网络模式定义了容器如何互相连接,以及和外部网络交互的方式。包括以下常用的网络模式:

  • host网络模式: 使用宿主机的网络栈。容器与宿主机平级,直接使用宿主机IP地址。

  • bridge(默认)网络模式: 通过虚拟网桥(docker0)将容器桥接到宿主机上。它会为每一个容器创建一对 veth 接口,一个接口连着容器,另一个接口连到虚拟网桥上。

  • overlay 网络模式: 创建一个可以跨多台物理主机的虚拟网络。

  • macvlan 网络模式: 允许容器绑定到宿主机网卡上并直接使用宿主机MAC地址。

Docker 网络配置

创建自定义 bridge 网络

假设我们需要在一台主机上创建一个名为 mynetwork 的自定义网桥网络。可以使用以下命令:

docker network create -d bridge mynetwork

其中 -d bridge 指定了使用 bridge 网络模式。创建成功后可以通过以下命令查看网络配置情况:

docker network inspect mynetwork

可以看到输出信息中有一个"Containers"字段,里面是当前自定义网络中的所有容器。

连接容器到自定义网络

现在我们来创建两个容器并连接到 mynetwork:

docker run --name my-webapp1 --network mynetwork -d nginx
docker run --name my-webapp2 --network mynetwork -d nginx

上述命令中 --network 指定了将容器连接到 mynetwork 自定义网络。打开浏览器,尝试访问 http://容器1的IPhttp://容器2的IP ,应该能够正常访问 nginx 默认欢迎页面。

容器之间互联

假设我们现在需要在 mynetwork 中建立两个容器之间的互联。其中一个容器是 web 应用,另一个容器是 MySQL 数据库。MySQL 容器应该监听在一个非 3306 端口上,我们需要将 MySQL 容器暴露出来的端口映射到宿主机上。

假设 MySQL 容器的 IP 是 172.18.0.3 (可以通过 docker inspect 命令查看),MySQL 容器的端口是 13306 ,那么我们可以通过以下命令连接到 web 容器:

docker run --name webapp --network mynetwork -p 8000:80 -e DB_HOST=172.18.0.3 -e DB_PORT=13306 -d my-webapp-image

上述命令中 -p 8000:80 指定了将 web 容器内部的 80 端口映射到宿主机的 8000 端口,这样就可以通过浏览器访问 web 服务了。

值得注意的是,mysql 容器的 13306 端口在 mynetwork 内部是可以直接访问的,而在 webapp 容器内则需要通过原本的 localhost:13306(或者 127.0.0.1:13306)来访问。

总结

本文讲解了 Docker 网络模式以及相关的配置方式,并通过示例说明了如何自定义 bridge 网络、将容器连接到自定义网络、以及如何处理容器之间的互联问题。了解了这些内容之后,我们就可以自如地运用 Docker 来构建各种不同的应用环境了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Docker 网络模式及配置方式 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • Docker容器修改端口映射的实现

    下面是关于Docker容器修改端口映射实现的攻略。 什么是Docker容器端口映射 Docker是一种容器化技术,所有的应用程序和依赖项都可以打包进一个独立的容器中。容器虚拟化了操作系统,这样我们就可以在一个和主机的系统完全独立的环境中运行应用程序。Docker容器端口映射是一种将容器内部端口映射到宿主机外部端口的技术。这样,我们可以通过宿主机的IP地址和端…

    Docker 2023年5月16日
    00
  • Docker安装nginx

    一、docker pull nginx 二、 docker run -p 80:80 –name mynginx -v $PWD/www:/www -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/logs:/wwwlogs -d nginx 出现如下错误提示 解决步骤: 1、先使用 docker …

    Docker 2023年4月12日
    00
  • 使用Docker安装Centos,并通过SSH连接到容器

    运行环境:Windows11(有WSL2),Docker Desktop(使用WSL2 引擎 Use the WSL2 based Engine) 从Docker Hub获取centos相关的镜像 选择Offical image的镜像 从Tags中找到合适镜像,并复制命令,在cmd中运行命令 然后就可以在Docker Desktop软件中看到此镜像 使用此镜…

    Docker 2023年4月11日
    00
  • Centos中的Docker 配置:将loop-lvm改为derict-lvm

    重新装了个虚拟机,回顾一下最近三天的工作: Centos 查看版本 cat /etc/redhat-release yum -y upgrade 升级所有包,不改变软件设置和系统设置,系统版本升级,内核不改变 目前的版本为CentOS Linux release 7.2.1511 (Core)   添加内核参数 默认配置下,在 CentOS 使用 Docke…

    Docker 2023年4月13日
    00
  • CentOS 7.2 下安装 Docker 1.12.3 版的详细方法

    下面是“CentOS 7.2 下安装 Docker 1.12.3 版的详细方法”的完整攻略: 环境准备 安装 Docker 前需要配置好系统环境,包括更新系统软件源、安装必要的依赖库、卸载旧的 Docker 版本等。 1.更新yum源 yum update 2.卸载旧版本Docker yum remove docker docker-common docke…

    Docker 2023年5月16日
    00
  • Docker中配置国内镜像设置

    配置 Docker 国内镜像可以使得从 Docker Hub 拉取镜像时速度更快并且能够避免因网络访问问题而导致无法拉取的情况。以下是在 Docker 中如何配置国内镜像的完整攻略: 步骤一:检查已安装 Docker 版本 在开始配置 Docker 国内镜像之前,首先需要确定已安装 Docker 的版本。本文针对 Docker 19.03.12 版本进行介绍…

    Docker 2023年5月16日
    00
  • 创建镜像发布到镜像仓库【不依赖docker环境】

    image 工具背景 如今,docker镜像常用于工具的分发,demo的演示,第一步就是得创建docker镜像。一般入门都会安装docker,然后用dockerFile来创建镜像,除此以外你还想过有更高效的方式吗? image Google开发的jib不依赖docker环境也能创建docker或者OCI类型的镜像,但是可惜它只为java应用而生,其他类型的比…

    2023年4月8日
    00
  • centos docker安装rabbitmq

    1、进入镜像仓库 https://hub.docker.com/ 2、搜索rabbitMq,进入官方的镜像,选择带有“mangement”的版本(包含web管理页面)    3、拉取镜像 docker pull rabbitmq:3.8.16-management #/bin/bash docker run -d –name rabbitmq \ -p 5…

    Docker 2023年4月11日
    00
合作推广
合作推广
分享本页
返回顶部