0

    每日分享- Docker 端口映射与容器互联及相关知识

    2023.07.12 | admin | 156次围观

    Docker 容器可以使用端口映射和容器互联来实现与主机和其他容器的通信。下面分别介绍这两种方法,以及它们的优缺点和注意事项:

    1 端口映射

    在 Docker 中本地端口 80,可以使用端口映射将容器内部的端口映射到主机上的端口,从而使主机可以与容器通信。

    方法

    通过使用 '-p' 选项来指定端口映射规则。例如,以下命令将容器的端口 '8080' 映射到主机上的端口 '80':

    docker run -p 80:8080 myapp

    这个命令将创建一个新容器并将其命名为 'myapp',并将容器内部的 '8080' 端口映射到主机上的 '80' 端口。

    优点

    缺点

    注意事项

    2 容器互联

    容器互联是指将多个 Docker 容器连接在一起,从而可以实现容器之间的通信。通过容器互联,可以将多个容器组合成一个应用程序的整体。

    方法

    使用 Docker 的 '--link' 选项来将容器连接起来。例如,以下命令将一个名为 'web' 的容器连接到一个名为 'db' 的容器上:

    docker run --name web --link db myapp

    在这个命令中,'web' 容器将连接到 'db' 容器,并能够使用 'db' 容器内部的服务。

    优点

    缺点

    除了上述的两种方法,还有其他方法可以实现容器之间的通信,例如使用 Docker 的网络功能,但是这些方法相对较为复杂,适用于更为复杂的应用场景。

    接下来我简单介绍一下Docker 的网络功能及其常用的网络驱动程序

    Docker 网络功能

    Docker 的网络功能允许容器之间相互通信,并且允许容器访问外部网络。Docker 提供了多种网络驱动程序,可以创建不同类型的网络。每个网络驱动程序都有其自己的优缺点和适用场景。

    Docker 支持以下几种网络驱动程序:

    除了以上四种网络驱动程序,Docker 还支持其他的网络驱动程序,例如:

    常用的 Docker 网络驱动程序1 Bridge(桥接网络)

    桥接网络是默认的网络驱动程序,可以让容器之间互相访问,也可以让容器访问宿主机上的网络。

    方法

    使用 Docker 的 ‘bridge’ 驱动程序,可以使用以下命令创建桥接网络:

    docker network create my-network

    然后,可以使用以下命令创建一个新的容器,并将其连接到 'my-network' 网络:

    docker run --name my-container --network my-network my-image

    优点

    缺点

    注意事项

    每日分享- Docker 端口映射与容器互联及相关知识

    2 Host(主机网络)

    主机网络允许容器共享宿主机的网络命名空间,从而使得容器可以直接访问宿主机上的网络。

    方法

    使用 Docker 的 'host' 驱动程序,可以使用以下命令创建主机网络:

    docker run --name my-container --network host my-image

    优点

    缺点

    3 Overlay(覆盖网络)

    覆盖网络允许在多个 Docker 主机之间创建网络,从而允许容器在不同的主机之间通信。

    方法

    使用 Docker 的 'overlay' 驱动程序,可以使用以下命令创建覆盖网络:

    docker network create --driver overlay my-network

    然后,在其他 Docker 主机上也需要创建同名的覆盖网络,并将它们加入到同一个 swarm 中。这样,就可以在 swarm 内的所有 Docker 主机上使用同一个网络了。

    优点

    缺点

    4 Macvlan(物理网络)

    物理网络允许将容器连接到物理网络上,从而允许容器与外部网络通信。

    方法

    使用 Docker 的 'macvlan' 驱动程序本地端口 80,可以使用以下命令创建物理网络:

    docker network create -d macvlan --subnet= --gateway= -o parent= my-macvlan-network

    其中,''、'' 和 '

    ' 都需要根据实际情况进行修改。这个命令将创建一个新的 'macvlan '网络,并将其连接到指定的物理网络上。

    然后,可以使用以下命令将容器连接到这个网络上:

    docker run --name my-container --network my-macvlan-network my-image

    优点

    缺点

    5 自定义网络

    使用自定义网络时,可以创建一个新的虚拟网络,并将容器连接到该网络中,容器可以在该网络中进行通信,也可以通过端口映射访问主机上的服务。

    方法

    使用 Docker 的 'bridge' 驱动程序,可以使用以下命令创建一个新的自定义网络:

    docker network create my-network

    然后,使用以下命令将容器连接到该网络中:

    docker run --name my-container --network my-network my-image

    优点

    缺点

    版权声明

    本文仅代表作者观点。
    本文系作者授权发表,未经许可,不得转载。

    发表评论