一、注意
文章中有几个注意点:
- 涉及到2个配置文件,一个是 hostconfig,一个是 config.v2 ,并不是一个配置文件
- 先把容器停止了,再去修改容器的配置文件
- 修改完配置文件以后,需要重启 docker 服务,而不是重启容器
- 修改端口时,要分清楚容器的端口号,和透出去的端口
这几个点注意了,应该是可以修改成功了
二、实战
因为容器的配置是json格式,我是用的notepad++ 的json插件来可视化的,这样更改起来不容易出错
\\wsl$\docker-desktop-data\version-pack-data\community\docker\containers\
将上面的命令,输入windows磁盘的快速访问,就可以看到你的所有容器的配置目录,然后进入对应容器目录,修改对应容器的配置即可
后来我更换了固态硬盘,地址就变成如下了
\\wsl.localhost\docker-desktop-data\data\docker\containers
这个目录是可以试的,以后一旦更换硬盘啥的,你可以先输入 \wsl$,看看这个目录下都有啥,最终就可以找到docker 配置所在的位置
而且这个目录下会记录启动日志,这个简直太棒了,当你启动容器,你就可以看看哪里出问题了
2.1 修改文件 hostconfig
这里需要把容器先停止掉
因为修改是很容易出错的,有可能就少了逗号,或者大括号对不上了,所以先备份文件,以便出错时,可以回滚
更改前配置如下:
"PortBindings": {
"22/tcp": [
{
"HostIp": "",
"HostPort": "20215"
}
],
"5555/tcp": [
{
"HostIp": "",
"HostPort": "25555"
}
]
},
我原来 docker 容器的端口对应是,20215端口映射到容器的22端口,25555端口映射到容器的5555端口,我现在想把宿主机的5555端口映射到容器的5555端口,同时添加,宿主机的5556端口映射到容器的5556端口,更改后的结果如下
"PortBindings": {
"22/tcp": [
{
"HostIp": "",
"HostPort": "20215"
}
],
"5555/tcp": [
{
"HostIp": "",
"HostPort": "5555"
}
],
"5556/tcp": [
{
"HostIp": "",
"HostPort": "5556"
}
]
},
2.2 修改配置文件 config.v2
注意这个配置文件是 config.v2,和上面的配置文件 hostconfig 是不一样的,也需要先备份一下
更改前的配置:
"ExposedPorts": {
"22/tcp": {},
"5555/tcp": {}
},
更改后的结果:
"ExposedPorts": {
"22/tcp": {},
"5555/tcp": {},
"5556/tcp": {}
},
2.3 重启
重启整个 docker 服务,然后再修改修改的容器
2.4 查看结果
在重启完docker 服务,同时把容器启动以后,再去查看端口是否修改成功,可以在界面上,通过 docker 的 inspect 选项 查看端口是否修改成功,如下:
展示结果:
通过 docker 的inspect 查看,端口已经修改成功了
这张截图中的端口可能对不上,但主要是看看,是从哪里查看端口是否修改成功的
参考文章:
[1] 主要参考的文章