V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
binhb
V2EX  ›  Docker

关于 docker run 和 docker exec 执行结果不一样的疑问🤔️

  •  
  •   binhb ·
    ZingerLittleBee · 2022-06-04 21:47:18 +08:00 · 1657 次点击
    这是一个创建于 903 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景是这样的

    使用 rustlibpcaptui-rs, 写了一个监控网络流量的命令行 UI, 因为想简化使用的方式, 又了解到 --net=host 可以访问到宿主机的网络, 所以想放入 docker 容器.

    顺利成章的写出了如下的 dockerfile

    本来是分阶段构建的, 为了测试方便改成直接启动了

    FROM rust:latest as builder
    
    WORKDIR /usr/src/netop
    
    RUN apt-get update && apt-get install -y git libpcap-dev build-essential
    
    RUN git clone https://github.com/ZingerLittleBee/netop.git
    
    RUN mv netop/* .
    
    RUN cargo install --path .
    
    ENTRYPOINT [ "netop" ]
    

    镜像构建好, 运行容器

    docker run --privileged --net=host netop
    

    然后就出现如下错误, 意思是说 eth0 这块网卡不存在, 在容器内使用 ifconfig 是可以看到 eth0

    Error: Os { code: 6, kind: Uncategorized, message: "No such device or address" }
    

    奇怪的地方来了

    首先我创建了交互式的容器

    docker run -i --privileged --net=host --name=netop rust:latest
    

    手动执行了 Dockerfile 中的命令

    apt-get update && apt-get install -y git libpcap-dev build-essential
    git clone https://github.com/ZingerLittleBee/netop.git
    mv netop/* .
    cargo install --path .
    

    运行依旧是之前的错误

    但是

    我保持了交互式容器的会话, 然后新打开一个终端标签使用 docker exec

    docker exec -it netop bash
    

    进入容器, 运行 netop 就可以跑起来, 运行起来是这样的 netop

    疑问🤔️

    排除下

    • 代码应该没有问题, 我在 Mac 和 linux 上都跑的很 happy

    我怀疑是权限问题, 但是容器使用了特权模式和 host 网络

    为什么 docker run dockerfile 会出错, 但是 docker exec 可以执行呢

    第 1 条附言  ·  2022-06-05 00:28:25 +08:00

    非常感谢大佬提点, 加上 -it 参数, 就没问题了

    docker run -it --net=host netop
    
    2 条回复    2022-06-05 00:09:01 +08:00
    choury
        1
    choury  
       2022-06-04 22:46:05 +08:00   ❤️ 1
    docker run -it xxx 试下,这个设备说的不清不楚,说不定是 tty 设备
    binhb
        2
    binhb  
    OP
       2022-06-05 00:09:01 +08:00
    @choury #1 非常非常感谢,困扰我两天了,-it 真的可以
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2673 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 03:16 · PVG 11:16 · LAX 19:16 · JFK 22:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.