docker容器添加新端口映射的步骤及`wsl$`目录的作用

在Docker容器已经创建后,需要添加新的端口映射,即对已经存在的Docker容器添加新的端口映射,可以通过以下步骤来添加,即通过修改配置文件的方法。

如何新增端口映射?

查找容器的hash值

docker inspect [容器id或名称] | grep Id

停止docker服务

# 在修改之前,还需要停到容器和docker服务。
docker stop [容器id]
systemctl stop docker

修改配置文件

  • 配置文件位置
    • linux系统目录是:/var/lib/docker/containers目录
    • windows下的docker desktop的位置是:\wsl$\docker-desktop-data\data\docker\containers\
  • 找到与上述Id相同的文件夹,修改该文件夹下的 hostconfig.json 和 config.v2.json文件
    • config.v2.json有两处需要添加
      在这里插入图片描述
    • hostconfig.json 有一处
      在这里插入图片描述
  • 启动Docker服务【windows下是启动Docker Desktop服务】

wsl$目录

在Docker的Windows子系统(WSL)中,wsl$ 是一个特殊的目录,它代表了Windows子系统Linux的文件系统。这个目录在Windows主机上的文件资源管理器中可见,允许Windows用户直接访问和与WSL中的Linux文件进行交互。

WSL(Windows Subsystem for Linux)是一个为Windows 10和Windows Server 11提供兼容层的系统,它允许用户在Windows上直接运行Linux二进制可执行文件。通过WSL,用户可以无缝地在Windows和Linux环境之间切换,无需启动虚拟机或双启动系统。

wsl$ 目录的引入,为Windows和Linux之间的文件共享提供了极大的便利。用户可以通过简单地打开文件资源管理器并导航到 wsl$ 目录,来访问和编辑WSL中的Linux文件和文件夹。这个特性对于需要在Windows环境中使用Linux工具和应用程序的开发者来说非常有用。

例如,如果您在WSL中安装了一个Linux文本编辑器,如vim,并且想要编辑位于Windows文件系统中的文件,您可以直接从Windows文件资源管理器中拖放文件到wsl$目录下,然后在WSL中打开和编辑它们。

使用wsl$ 目录时,需要注意以下几点:

  1. 权限和所有权:Windows和Linux有不同的文件权限和所有权模型。在使用wsl$ 目录时,您可能需要了解这些差异,以确保正确地设置和管理文件权限。
  2. 文件系统性能:虽然wsl$ 提供了方便的文件共享功能,但在某些情况下,与Linux文件系统的直接交互可能比通过wsl$ 目录进行操作更快。对于需要高性能文件访问的场景,建议直接在WSL中操作文件。
  3. 版本兼容性:WSL 2(Windows Subsystem for Linux 第二版)提供了一个真正的Linux内核,并且通常提供更好的性能和完整的系统调用兼容性。如果您需要使用wsl$ 目录,请确保您的Windows版本支持WSL 2。

总之,wsl$ 是Docker在Windows子系统Linux中的一个特殊目录,它为用户提供了一种方便的方式来访问和管理WSL中的Linux文件。通过使用wsl$ 目录,用户可以在Windows和Linux环境之间无缝地共享文件,从而提高工作效率。

在linux系统中,目录是/var/lib/docker
在windows系统中,目录是\wsl$\docker-desktop-data\data\docker
在这里插入图片描述

查看系统版本

uname -a   (Linux查看版本当前操作系统内核信息)
cat /proc/version (Linux查看当前操作系统版本信息)
cat /etc/issue  或cat /etc/redhat-release(Linux查看版本当前操作系统发行版信息)
getconf LONG_BIT  (Linux查看版本说明当前CPU运行在32bit模式下, 但不代表CPU不支持64bit)
### 修改 Docker 容器端口映射Docker 中更改容器端口映射可以通过多种方式实现,具体取决于操作系统环境以及当前运行状态。以下是针对不同场景的操作方法: #### Linux 平台下的操作流程 对于基于 Linux 的系统,可以按照以下步骤完成对现有容器端口映射的修改。 1. **停止 Docker 服务** 需要先暂停 Docker 服务以防止动态更冲突。此过程可通过 `systemctl` 实现: ```bash systemctl stop docker ``` 2. **定位目标容器的相关配置文件** 找到 `/var/lib/docker/containers/<CONTAINER_ID>` 路径下存储的目标容器 ID 文件夹中的 `hostconfig.json` 文件[^4]。该 JSON 文件包含了所有的宿主机与容器之间的资源绑定关系,包括端口映射设置。 3. **编辑 hostconfig.json 文件** 使用文本编辑工具打开并调整其中 `"PortBindings"` 字段的内容来指定的外部访问端口。例如: ```json { "80/tcp": [ { "HostIp": "", "HostPort": "9090" } ] } ``` 4. **重启 Docker 服务使改动生效** 编辑完成后重启动 Docker 服务即可应用设定: ```bash systemctl start docker ``` #### Windows 平台上的处理办法 如果是在 Windows 上部署了 WSL2 版本的 Docker Desktop,则需采取稍有不同的策略来进行同样的变更工作流如下所示: 1. **连接至 Docker Desktop 数据目录** 利用快捷键组合 Win+R 输入特殊路径字符串 `\wsl$`, 浏览导航直至发现名为 'docker-desktop' 的共享网络位置;在此处进一步查找子项 containers 下面的具体实例记录[^3]. 2. **获取特定 ContainerID 和关联元数据信息** 对应于每一个正在运作或者历史存在过的镜像实体都会被分配唯一标识符(ContainerID),借助命令行查询手段能够快速锁定目标对象及其属性详情: ```powershell docker inspect --format='{{.Id}}' <your_container_name> ``` 3. **手动修正内部定义文档参数值** 寻址到达确切存放地址之后, 分别进入 config.v2.json 和 hostconfig.json 这两份核心描述性档案之中实施必要的数值替换动作. 4. **保存退出再验证成果表现状况** 最后一步就是确认一切正常运转无误的情形之下结束整个作业环节. ```python import subprocess def check_port_mapping(container_id): result = subprocess.run(['docker', 'port', container_id], capture_output=True, text=True) if not result.stdout.strip(): return f"No ports are currently mapped for the specified container {container_id}. Please verify your settings." else: return result.stdout print(check_port_mapping('d5104ec757b6')) ``` 上述脚本可以帮助检查某个给定容器的实际对外暴露接口情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

enjoy编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值