Проблемы с DNS при запуске док-контейнера ARM с использованием qemu на x86

Еще один ответ, основанный на практическом опыте.

Я бы использовал один -лайнер, если бы это был «выбрасываемый» код, который я мог бы написать прямо в командной строке. Например, я мог бы использовать это:

for h in host1 host2 host3; do printf "%s\t%s\n" "$h" "$(ssh "$h" uptime)"; done

Я бы воспользовался скриптом, если бы решил, что код стоит сохранить. На этом этапе я бы добавил описание вверху файла, возможно, добавил проверку ошибок и, возможно, даже проверил бы его в репозитории кода для проверки версий. Например, если бы я решил, что проверка времени безотказной работы набора серверов — это полезная функция, которую я буду использовать снова и снова, одну строку -выше можно было бы расширить до этой:

#!/bin/bash
# Check the uptime for each of the known set of hosts
########################################################################
#
hosts=(host1 host2 host3)

for h in "${hosts[@]}"
do
    printf "%s\t" "$h"
    uptime=$(ssh -o ConnectTimeout=5 -n "$h" uptime 2>/dev/null)
    printf "%s\n" "${uptime:-(unreachable)}"
done

Обобщая, можно сказать

  • Один -вкладыш

    • Простой код (, то есть всего «несколько» операторов ),написано для конкретного -не по назначению
    • Код, который можно написать быстро и легко, когда это необходимо
    • Одноразовый код
  • Скрипт

    • Код, который (возможно )будет использоваться более одного или двух раз
    • Сложный код, требующий нескольких операторов
    • Код, который должны поддерживать другие
    • Код, понятный другим
    • Код для автоматического запуска (, например, изcron)

Я вижу довольно много вопросов здесь по unix.SE просят один -лайнер для выполнения конкретной задачи. Используя мои примеры выше, я думаю, что второй гораздо более понятен, чем первый, и поэтому читатели могут узнать из него больше. Одно решение может быть легко получено из другого, поэтому в интересах удобочитаемости (для будущих читателей )нам, вероятно, следует избегать предоставления кода, втиснутого в одну строку для чего-либо, кроме самых тривиальных решений.

0
21.01.2021, 10:39
1 ответ

У меня такая же проблема. Моим обходным решением было временное понижение версии qemu -пользователя -статического изображения:

    docker run --rm --privileged multiarch/qemu-user-static:5.0.0-2 --reset -p yes 
0
18.03.2021, 22:35

Теги

Похожие вопросы