Docker 查看网卡 MAC

在使用 Docker 进行容器化部署时,我们常常需要了解容器中的网络配置信息,其中包括网卡的 MAC 地址。本文将介绍如何使用 Docker 命令来查看容器的网卡 MAC 地址,并提供相应的代码示例。

什么是 MAC 地址?

MAC(Media Access Control)地址,也称为物理地址,是用于标识网络设备的唯一地址。每个网络接口都有一个独特的 MAC 地址,由 6 组十六进制数表示,中间使用冒号(:)分隔,如 01:23:45:67:89:ab

Docker 命令

Docker 提供了一系列命令来管理容器,包括查看容器的网络配置信息。下面是一些常用的 Docker 命令:

  • docker run:运行一个新的容器。
  • docker ps:列出当前正在运行的容器。
  • docker inspect:获取容器的详细信息,包括网络配置。
  • docker exec:在运行中的容器中执行命令。

查看容器的 MAC 地址

要查看容器的 MAC 地址,可以使用 docker inspect 命令。该命令返回容器的详细信息,包括网络配置。下面是一个使用 docker inspect 命令查看容器 MAC 地址的示例:

docker inspect -f '{{ .NetworkSettings.Networks.bridge.MacAddress }}' <container_id>

在上面的命令中,我们使用了 -f 参数来指定输出的格式,{{ .NetworkSettings.Networks.bridge.MacAddress }} 是一个 Go 模板字符串,表示输出容器的网桥网络的 MAC 地址。

接下来,我们将结合一个具体的示例来演示如何使用该命令。

假设我们有一个名为 my-container 的容器,我们可以使用下面的命令来查看该容器的 MAC 地址:

docker inspect -f '{{ .NetworkSettings.Networks.bridge.MacAddress }}' my-container

输出结果类似于:02:42:ac:11:00:02

示例应用

为了更好地理解如何使用 Docker 命令来查看容器的 MAC 地址,我们将创建一个简单的示例应用,并在容器中使用该命令来获取 MAC 地址。

应用结构

我们的示例应用由两个容器组成:一个 Web 容器和一个数据库容器。Web 容器将向数据库容器发送请求,并显示数据库中的内容。

为了简化示例,我们将使用一个名为 mysql 的官方 MySQL 镜像作为数据库容器,并使用一个带有 RESTful API 的 Node.js 应用作为 Web 容器。下面是应用的结构:

sequenceDiagram
    participant W as Web Container
    participant D as Database Container
    
    W->>D: 请求数据
    D-->>W: 返回数据
    W->>W: 显示数据

创建容器

首先,我们需要创建一个 MySQL 容器来作为数据库。我们可以使用以下命令创建并启动一个 MySQL 容器:

docker run -d --name database -e MYSQL_ROOT_PASSWORD=password mysql

在上面的命令中,我们使用了 -d 参数来指定容器在后台运行,--name 参数来指定容器的名称,-e 参数来设置 MySQL 的 root 用户密码为 passwordmysql 是官方 MySQL 镜像的名称。

接下来,我们需要创建一个 Node.js 应用容器来作为 Web 服务器。我们可以使用以下命令创建并启动一个 Node.js 容器:

docker run -d --name web --link database:mysql -p 3000:3000 node:14-alpine node app.js

在上面的命令中,我们使用了 --link 参数来链接数据库容器,-p 参数来将容器的 3000 端口映射到主机的 3000 端口,node:14-alpine 是官方 Node.js 镜像的名称,node app.js 是在容器中执行的命令。