tcpdump на контейнере docker выдает ошибку «недопустимое количество выходных файлов» - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь запустить команду tcpdump в контейнере docker, но всегда получаю эту ошибку: «tcpdump: недопустимое количество выходных файлов =»

Я запускаю docker в Ubuntu.

Это мой запуск контейнера:

sudo docker run --name pcap_log -it --network=host -e "log_int=any" -e "log_rot=30" -e "log_fil=120" --mount source=/home/docker/container_data/pcap_data, target=/pcap_captures, type=bind pcap_log:12345

Это мой образ:

FROM debian:10.3
RUN apt-get update \
    && apt-get install -y \
    tcpdump
RUN mv /usr/sbin/tcpdump /usr/bin/tcpdump
RUN mkdir /pcap_captures
WORKDIR /pcap_captures

ARG log_int
ARG log_rot
ARG log_fil

ENV log_int = $log_int
ENV log_rot = $log_rot
ENV log_fil = $log_fil

CMD tcpdump -i $log_int -G $log_rot -w '%Y-%m-%d_%H:%M:%S.pcap' -W $log_fil -U

1 Ответ

0 голосов
/ 18 июня 2020

"tcpdump: недопустимое количество выходных файлов ="

Как видите, где-то остался знак =, который не интерпретируется правильно.

Проблема заключается в вашем объявлении ENV с дополнительным пробелом до и после знака =. Например,

ENV log_int = $log_int

указывает docker, что переменная среды log_int должна быть установлена ​​на значение = $log_ing. Либо вы полностью отбрасываете знак равенства

ENV log_int $log_int

, либо удаляете пробелы вокруг него

ENV log_int=$log_int

Оба они полностью эквивалентны.

Я действительно предлагаю вам оставить второй форме, объявите все ваши env одним действием и защитите ваши vars кавычками:

ENV log_int="$log_int" log_rot="$log_rot" log_fil="$log_fil"
...