单个主机上的基本Docker网络

2020年12月30日11:25:40 发表评论 35 次浏览

了解如何使用基本和高级联网工具来管理Docker容器。网络功能允许用户定义自己的网络并将容器连接到它们。

你可以使用Docker网络功能在单个主机上或跨多个主机的网络上创建网络。本文将介绍单个主机上的联网Docker容器。有关跨多个主机联网Docker容器的信息和说明, 请参阅我们关于该主题的文章。

要求

  • notlogy Linux云服务器
  • Docker已安装并在你的系统上运行。

在不使用Sudo的情况下安全地使用Docker

Docker守护程序以根, 这意味着用户将需要使用sudo运行Docker命令。

避免使用须藤对于每个Docker命令, 只需将你的用户添加到码头工人使用以下命令分组:

usermod -aG docker [username]

例如, 通过添加用户do对于Docker组, 该用户将不再需要对每个Docker命令使用sudo。要将用户添加到组, 请使用以下命令:

usermod -aG docker jdoe

Docker的默认网络

每次Docker安装都会自动构建三个默认网络。你可以使用以下命令列出这些网络:

sudo docker network ls

该命令的输出将类似于以下内容:

与Docker 1联网

的桥网络是默认网络。除非另有规定, 桥是Docker将启动任何新容器的网络。

Docker网络:网桥与覆盖

Docker本机支持两种类型的网络:桥接和覆盖。

  • 一种桥网络限于单个主机(服务器)。
  • An覆盖网络可以跨越多个主机(服务器)。

由于覆盖网络更加复杂, 因此我们将在另一篇文章中介绍它们。

检查网络

检查Docker网络将返回有关该网络的信息, 包括连接到该网络的容器及其IP地址。这是一种有价值的测试工具, 也是查找容器IP地址的简便方法。

你可以使用以下命令检查网络:

sudo docker network inspect [network name]

例如, 检查桥网络, 命令是:

sudo docker network inspect bridge

该命令的输出将类似于以下内容:

与Docker 2联网:检查网络

如你在上面的屏幕截图中所见, 此容器上仅运行一个容器桥网络。容器的名称是test_centos_container分配给它的IP地址是172.17.0.3。

注意:容器只能在同一网络上运行时才能相互通信。例如, 如果你在一个容器中有一个Web应用程序, 而该Web应用程序需要连接到另一个容器中的数据库, 则这两个容器都需要位于同一网络上。

创建一个新的网桥网络

要创建自己的网络, 命令是:

sudo docker network create -d [driver] [new network name]

的-d标志可让你指定网络的驱动程序。对于网桥网络, 请使用桥司机。

例如, 创建一个名为new_test_network, 使用命令:

sudo docker network create -d bridge new_test_network

你可以使用sudo docker网络ls列出主机上的网络并验证是否已创建网络。

启动容器并将其添加到网络

如果在启动容器时未指定网络, 则它将自动添加到默认网桥网络。

要启动容器并将其添加到特定网络, 请使用以下命令:

sudo docker run -it --net=[network name] --name [container name] [image]

例如, 启动一个名为t的容器est_python_container从python映像并将其添加到名为new_test_network, 命令为:

sudo docker run -it --net=new_test_network --name test_centos_container centos

采用CTRL-pCTRL-q从容器中分离。

你可以使用sudo docker network inspect[网络名字]检查网络并验证容器是否已连接。

将正在运行的容器添加到网络

你可以使用以下命令将正在运行的容器添加到网络:

sudo docker network connect [network name] [container name]

例如, 添加一个名为test_centos_container到一个名为another_test_network, 命令为:

sudo docker network connect another_test_network test_centos_container

你可以使用sudo docker network inspect [网络名称]检查网络并验证容器是否已连接。

注意:Docker允许你将容器添加到多个网络。在将容器添加到另一个网络之前, 无需将其与一个网络断开连接。

断开容器与网络的连接

要断开容器与网络的连接, 请使用以下命令:

sudo docker network disconnect [network name] [container ID or name]

例如, 断开名为的容器test_centos_container来自new_test_network网络, 命令为:

sudo docker network disconnect new_test_network test_centos_container

你可以使用以下命令sudo docker network inspect [网络名称]检查网络并确认容器已断开连接。

注意:Docker允许你将容器添加到多个网络。在将容器添加到另一个网络之前, 无需将其与一个网络断开连接。

删除网络

注意:你无法删除Docker在启动时创建的默认网络。

停止或断开所有已添加到网络的容器之后, 可以使用以下命令删除网络:

sudo docker network rm [network ID or name]

例如, 删除网络new_test_network, 命令为:

sudo docker network rm new_test_network

你可以使用以下命令验证网络是否已删除须藤码头网络ls命令。

示例:在同一网络上的两个容器之间执行ping操作

在此示例中, 我们将创建一个自定义网桥网络, 在该网络上启动两个容器, 并将其连接到ping_sender容器, 然后ping另一个容器ping_receiver从那里。

注意:此示例将使用名为CentOS 7的官方映像中心你可以使用以下命令从Docker网站下载该文件:

sudo docker pull centos

如果你喜欢使用Ubuntu, 只需替换一个Ubuntu映像即可。

首先, 创建一个名为ping_test_network使用命令:

sudo docker network create -d bridge ping_test_network

接下来, 启动一个名为ping_receiver并将其附加到ping_test_network使用以下命令桥接网络:

sudo docker run -it --net=ping_test_network  --name ping_receiver centos /bin/bash

采用CTRL-p CTRL-q脱离ping_receiver容器。

检查ping_test_network得到的IP地址ping_receiver使用以下命令的容器:

sudo docker network inspect ping_test_network

记下容器的IP地址。

与Docker 5联网:获取IP地址

在这种情况下, IP地址为172.19.0.2。

启动一个名为的容器ping_sender并将其附加到ping_test_network与命令桥接:

sudo docker run -it --net=ping_test_network  --name ping_sender centos bin/bash

连接到容器并显示命令提示符后, 使用以下命令ping其他容器:

ping [IP address of ping_receiver]

在这种情况下, 我们将ping IP地址172.19.0.2。 ping成功的结果将如下所示:

与Docker 4联网

退出ping与CTRL-C, 然后使用CTRL-pCTRL-q退出容器。

一盏木

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: