从Docker容器内部访问宿主的IP地址

本文介绍了三种从Docker容器内部访问宿主IP地址的方法:使用宿主网络模式、利用特殊IP地址172.17.0.1和挂载宿主网络命名空间。推荐使用--network=host选项,并讨论了连接到主机网络的配置方式。

       从Docker容器内部访问宿主的IP地址的几种方法,推荐第2种。

使用宿主网络模式

       在运行容器时,可以使用--network=host选项,这将使得容器共享宿主的网络命名空间,使得容器内部可以直接访问宿主的IP地址。

docker run --network=host your_image_name 

使用特殊的宿主地址

       在Linux系统中,可以使用特殊的IP地址172.17.0.1来代表宿主,这个IP地址通常用于Docker默认的网络桥接模式中。

挂载宿主的网络命名空间

       可以手动挂载宿主的网络命名空间到容器内部。这种方法比较复杂,但是也是可行的。可以使用nsenter命令来实现这一点。

      首先,需要获取宿主的网络命名空间ID:

sudo docker inspect --format '{{ .State.Pid }}' <container_id_or_name> 

         然后,使用nsenter命令将容器加入到宿主的网络命名空间中:

sudo nsenter --target <host_pid> --net <your_command> 

        这样,就可以在容器内部直接访问宿主的网络。

连接到主机网络
        Docker 提供了一个主机网络,让容器可以共享主机的网络堆栈。这种方法意味着容器内的本地主机解析为物理主机,而不是容器本身。通过添加 --network=host 标志与主机网络一起启动容器:

docker run -d --network=host my-container:latest

要实现从 Ubuntu Docker 容器内部访问宿主机器上运行的 CLion 开发环境,需要确保容器能够与宿主机进行网络通信,并且 CLion 能够通过远程开发功能连接到容器。以下是一个完整的配置方案: ### 网络配置 在运行 Docker 容器时,可以通过 `--add-host` 参数将宿主机IP 地址映射到容器中,使得容器可以通过一个固定的主机名访问宿主机。例如: ```bash docker run -it --add-host=host.docker.internal:host-gateway -p 8022:22 -v /tmp/.X11-unix/:/tmp/.X11-unix/:rw --env=DISPLAY=host.docker.internal:0 osrf/ros:humble-desktop-full ``` 在上述命令中: - `--add-host=host.docker.internal:host-gateway` 使得容器可以通过 `host.docker.internal` 这个主机名访问宿主机。 - `-p 8022:22` 将容器的 22 端口(SSH 端口)映射到宿主机的 8022 端口。 - `-v /tmp/.X11-unix/:/tmp/.X11-unix/:rw --env=DISPLAY=host.docker.internal:0` 用于支持 GUI 应用程序的显示[^1]。 ### CLion 配置 在 CLion 中,可以通过远程开发功能连接到 Docker 容器。具体步骤如下: 1. **创建远程主机配置**:在 CLion 中,进入 `File` -> `Settings` -> `Build, Execution, Deployment` -> `Deployment`,点击 `+` 号,选择 `SSH`,然后输入宿主机IP 地址和映射的端口号(如 8022),以及登录凭证[^2]。 2. **配置远程解释器**:在 `Settings` 中,进入 `Project: <project_name>` -> `Python Interpreter`,点击齿轮图标,选择 `Add...`,然后选择 `SSH`,选择之前创建的远程主机配置,指定远程解释器路径(如 `/usr/bin/python3`)[^3]。 3. **同步项目文件**:确保 CLion 中的项目文件与 Docker 容器中的文件保持同步。可以在 `Deployment` 设置中配置自动上传文件。 ### 示例代码 假设你已经有一个简单的 Python 脚本 `hello.py`,内容如下: ```python print("Hello from Docker container!") ``` 你可以在 CLion 中编辑这个文件,并通过远程解释器运行它。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值