码上焚香

Yahocen

通过修改配置文件为 Docker 容器增加端口映射

64
2024-07-31

工作中经常会遇到需要在现有环境中使用Docker部署各种容器。由于文档不足,无法盲目地重建容器。在这种情况下,如果需要对特定容器增加端口映射,可以通过修改Docker配置文件来实现。这种方式的缺点是需要停止整个Docker服务。接下来详细介绍具体的操作步骤:

关闭 Docker 服务

# 停止docker服务
systemctl stop docker

找到容器的配置文件路径

在 Docker 中,每个容器相关的数据都存储在 /var/lib/docker/containers 目录中,以容器ID为命名的目录进行组织。这些目录包括容器的配置文件、日志以及其他元数据。

通过 docker inspect [容器名称] | grep "Id" 查看容器ID信息

通过拼接容器ID,您可以查看与该容器相关的配置文件。

修改配置文件

在修改容器的端口时,需要注意到 hostconfig.jsonconfig.v2.json 这两个文件,分别存储了容器的宿主机配置信息和容器本身的配置信息。

config.v2.json

需要修改此文件中的 ExposedPorts 部分,这部分指定了容器内部开放的端口。ExposedPorts 是一个 JSON 对象,其中的键是容器内部的端口号和协议(例如 "80/tcp"),值通常为空对象({}),因为这部分只是声明端口是开放的,而不涉及到具体的映射细节。

"ExposedPorts": {
    "端口号/tcp": {},
    "新增端口号/tcp": {}
}

注意在此处添加上自己要映射的端口号

hostconfig.json

需要修改此文件中的 PortBindings 部分用于定义容器端口到宿主机端口的映射关系,PortBindings 是一个 JSON 对象,其中的键是容器内部端口加协议(格式为 "端口号/协议",例如 "80/tcp"),值是一个对象数组,每个对象代表一个宿主机端口绑定,包括宿主机端口号和IP地址。

"PortBindings": {
    "端口号/tcp": [
        {
            "HostIp": "",
            "HostPort": "端口号"
        }
    ],
    "新增端口号/tcp": [
        {
            "HostIp": "",
            "HostPort": "新增端口号"
        }
    ]
}

注意在此处添加上自己要映射的端口号

启动 Docker 服务

在启动 Docker 服务之前,请务必确保已经正确修改了配置文件的格式,并且新增的端口号没有被其他服务占用。

# 启动docker服务
systemctl start docker