【问题标题】:Challenged accessing containerized DNS-SD挑战访问容器化 DNS-SD
【发布时间】:2021-03-10 14:08:45
【问题描述】:

我是 ZeroConf(和 Rust)菜鸟,当代码被容器化运行时,我很难理解为什么我无法访问基于 astro-dnssd 示例的服务在一个子shell中。

以下作品:

  1. 在主机上运行二进制文件和avahi-browse
./server

产量:

avahi-browse -all
+ enp5s0 IPv6 asto-dnssd                                    _rust._tcp           local
  1. 在容器中手动运行二进制文件并在主机上运行avahi-browse
docker run .... --entrypoint=bash [[image]]
> service dbus start
> service avahi-daemon start
> ./service

还有:

+ docker0 IPv4 asto-dnssd                                    _rust._tcp           local
  1. 在启动dbusavahi-daemon 后在子shell 中运行二进制文件:
docker run .... --entrypoint=bash [[image]]
> service dbus start
> service avahi-daemon start
> bash -c "./service"

但是,如果我在子 shell 中启动服务运行二进制文件,什么都不会:

docker run .... --entrypoint=bash [[image]]
> bash -c "service dbus start && service avahi-daemon start && ./service"

为什么会这样?

我有另一个使用 zeronconf 板条箱的示例,这样可以正常工作。

IIUC 我必须在容器映像中服务器之前启动dbusavahi-daemon,并且使用子shell 是正确的(!?)方法:

ARG PROJECT=astro-dnssd

FROM rustlang/rust:nightly-slim as builder

ARG PROJECT

RUN apt update && \
    apt install -y libavahi-compat-libdnssd-dev

RUN USER=root cargo new --bin ${PROJECT}

WORKDIR /${PROJECT}

COPY ./Cargo.toml ./Cargo.toml
RUN cargo build --release
RUN rm src/*.rs

ADD . ./

# Replace hyphens with underscores in ${PROJECT}
RUN rm ./target/release/deps/$(echo ${PROJECT} | tr '-' '_')*

RUN cargo build --release


FROM debian:buster-slim as runtime

ARG PROJECT

WORKDIR /bin

# Copy from builder and rename to 'server'
COPY --from=builder /${PROJECT}/target/release/${PROJECT} ./server

RUN apt update \
    && apt install -y \
    libavahi-compat-libdnssd-dev \
    && rm -rf /var/lib/apt/lists/*

RUN mkdir -p /var/run/dbus

ENTRYPOINT ["bash", "-c", "service dbus start && service avahi-daemon start && ./server"]

【问题讨论】:

    标签: docker dbus avahi


    【解决方案1】:

    已解决:时机。

    如果我在服务启动之间添加sleep,这似乎可以让系统有时间正常工作:

    这不起作用:

    (
      service dbus start
      service avahi-daemon start
      /release/astro-dnssd
    )
    

    但这确实:

    (
      service dbus start
      service avahi-daemon start
      sleep 2s
      /release/astro-dnssd
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-30
      • 2021-05-18
      • 2021-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-12
      相关资源
      最近更新 更多