Виртуализация :Виртуальные машины или Docker π

bashобрабатывает константы, начинающиеся с 0, как восьмеричные числа в своих арифметических выражениях, поэтому 011на самом деле 9.

На самом деле это требование POSIX.

Некоторые другие оболочки, такие как mkshили zsh, игнорируют его (, если только он не находится в режиме, совместимом с POSIX ), поскольку он гораздо чаще мешает, чем полезен.

С ksh93, BN=011; echo "$(($BN))"выводит 9, но echo "$((BN))"выводит 11.

В bashвы можете использовать BN=$((10#$(<Build.number))), что должно работать, если число не начинается с -или +.

1
08.11.2020, 01:04
2 ответа

Контейнеры Docker запоминают свою конфигурацию. Таким образом, все, что вы настроили, должно восстановиться, когда вы перезапустите его с помощью docker start, или оно перезапустится автоматически. Настройка сети выполняется при первоначальном создании контейнера с docker run. Так что все еще есть некоторый риск испортить ваш контейнер и потерять его конфигурацию.

Лучшим вариантом является использование docker -compose , чтобы точно определить, что вы хотите запустить (, включая сеть ). Таким образом, если вы уничтожите свой контейнер, вы всегда сможете запустить новый с идентичной конфигурацией.


Однако на самом деле Docker не следует рассматривать как виртуальную машину. Контейнеры предназначены для упаковки отдельных служб, а не целых машин.

Если вам просто нужно запустить что-то с PHP 5.4.16, вы можете легко запустить PHP внутри контейнера докеров с чем-то вроде php -fpm (docker pull php:fpm), а затем обслуживать это с помощью nginx или apache.

При необходимости вы можете смешивать и сопоставлять запущенные процессы в контейнерах и изначально на хосте.

2
18.03.2021, 22:52

Нет, разница между ВМ и контейнером не в состоянии.

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

Основное отличие состоит в том, что виртуальная машина виртуализирует аппаратное обеспечение. На нем должна быть установлена ​​полноценная ОС. Контейнер работает на ядре хоста. Это способ запуска процессов в пространстве имен (в изолированной среде ). Пространства имен являются частью ядра Linux. Docker использует функции ядра, которые может использовать любой достаточно привилегированный процесс.

Иногда можно использовать как контейнеры, так и виртуальные машины. Это то, что делает докер для MS -Windows, когда вы запускаете контейнер Linux.

1
18.03.2021, 22:52

Теги

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