bash
обрабатывает константы, начинающиеся с 0
, как восьмеричные числа в своих арифметических выражениях, поэтому 011
на самом деле 9
.
На самом деле это требование POSIX.
Некоторые другие оболочки, такие как mksh
или zsh
, игнорируют его (, если только он не находится в режиме, совместимом с POSIX ), поскольку он гораздо чаще мешает, чем полезен.
С ksh93
, BN=011; echo "$(($BN))"
выводит 9
, но echo "$((BN))"
выводит 11.
В bash
вы можете использовать BN=$((10#$(<Build.number)))
, что должно работать, если число не начинается с -
или +
.
Контейнеры Docker запоминают свою конфигурацию. Таким образом, все, что вы настроили, должно восстановиться, когда вы перезапустите его с помощью docker start
, или оно перезапустится автоматически. Настройка сети выполняется при первоначальном создании контейнера с docker run
. Так что все еще есть некоторый риск испортить ваш контейнер и потерять его конфигурацию.
Лучшим вариантом является использование docker -compose , чтобы точно определить, что вы хотите запустить (, включая сеть ). Таким образом, если вы уничтожите свой контейнер, вы всегда сможете запустить новый с идентичной конфигурацией.
Однако на самом деле Docker не следует рассматривать как виртуальную машину. Контейнеры предназначены для упаковки отдельных служб, а не целых машин.
Если вам просто нужно запустить что-то с PHP 5.4.16, вы можете легко запустить PHP внутри контейнера докеров с чем-то вроде php -fpm (docker pull php:fpm
), а затем обслуживать это с помощью nginx или apache.
При необходимости вы можете смешивать и сопоставлять запущенные процессы в контейнерах и изначально на хосте.
Нет, разница между ВМ и контейнером не в состоянии.
Да, Docker может забыть какое-то состояние, но не конфигурацию. Но обычно забывают изменения, внесенные в файловую -систему, когда она повторно -запускается. Однако его можно настроить, чтобы этого не делать. Однако вы , вероятно, не хотите этого делать.
Основное отличие состоит в том, что виртуальная машина виртуализирует аппаратное обеспечение. На нем должна быть установлена полноценная ОС. Контейнер работает на ядре хоста. Это способ запуска процессов в пространстве имен (в изолированной среде ). Пространства имен являются частью ядра Linux. Docker использует функции ядра, которые может использовать любой достаточно привилегированный процесс.
Иногда можно использовать как контейнеры, так и виртуальные машины. Это то, что делает докер для MS -Windows, когда вы запускаете контейнер Linux.