Docker 查看 MySQL 端口号

Docker 是一个开源的容器化平台,可以帮助开发人员和系统管理员快速构建、部署和运行应用程序。在使用 Docker 镜像构建和运行 MySQL 容器时,我们通常需要查看 MySQL 容器的端口号,以便进行连接和管理。本文将介绍如何使用 Docker 查看 MySQL 容器的端口号,并提供相应的代码示例。

1. Docker 安装与配置

首先,我们需要安装 Docker 并配置好环境。具体的安装和配置步骤可以参考 Docker 官方文档。安装完成后,我们可以通过以下命令来验证 Docker 是否安装成功:

docker version

如果成功输出 Docker 版本信息,则说明 Docker 安装成功。

2. 拉取 MySQL 镜像

接下来,我们需要拉取 MySQL 镜像。MySQL 官方提供了官方的 Docker 镜像,可以通过以下命令来拉取最新的 MySQL 镜像:

docker pull mysql:latest

3. 运行 MySQL 容器

拉取镜像后,我们可以通过以下命令来运行 MySQL 容器:

docker run -d -p 3306:3306 --name mysql-container -e MYSQL_ROOT_PASSWORD=password mysql:latest

其中,-d 参数表示以守护进程方式运行容器;-p 参数用于指定容器与主机之间的端口映射关系,格式为 主机端口:容器端口;--name 参数用于指定容器的名称;-e 参数用于指定环境变量,这里我们设置了 MySQL 的 root 密码。

4. 查看 MySQL 容器端口号

MySQL 容器启动后,我们可以通过以下命令来查看容器的端口号:

docker ps

该命令会列出当前正在运行的容器,并显示容器的端口映射关系。在输出结果中,可以找到对应 MySQL 容器的端口号。

5. 代码示例

下面是一个使用 Docker 查看 MySQL 容器端口号的代码示例:

import subprocess

def get_mysql_port():
    cmd = "docker ps"
    result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
    output = result.stdout

    lines = output.strip().split("\n")
    headers = lines[0].split()

    port_index = headers.index("PORTS")

    for line in lines[1:]:
        row = line.split()
        container_name = row[0]
        ports = row[port_index]
        if "mysql" in container_name:
            return ports.split(":")[1]

    return None

mysql_port = get_mysql_port()
print("MySQL 容器的端口号为:", mysql_port)

以上代码使用 subprocess 模块来执行命令 docker ps,并通过解析输出结果来获取 MySQL 容器的端口号。

6. 类图

下面是一个描述上述代码中类的类图示例:

classDiagram
    class Docker {
        + get_mysql_port() : int
    }

该类图表示了一个名为 Docker 的类,其中包含一个名为 get_mysql_port 的公有方法。

7. 状态图

下面是一个描述上述代码中状态的状态图示例:

stateDiagram
    [*] --> Running
    Running --> Stopped : stop
    Stopped --> Running : start

该状态图表示了 Docker 容器的两个状态:Running(运行中)和 Stopped(已停止)。通过执行 stop 命令可以从 Running 状态转换到 Stopped 状态,执行 start 命令可以从 Stopped 状态转换到 Running 状态。

结论

本文介绍了如何使用 Docker 查看 MySQL 容器的端口号,并提供了相应的代码示例。通过这些方法,我们可以方便地获取 MySQL 容器的端口号,以便进行连接和管理。如果想进一步学习 Docker 的其他功能和用法,可以参考 Docker 官方文档。希望本文能对你有所帮助!