Почему состояние контейнера Docker в виртуальной машине hyper-v неверно? - PullRequest
0 голосов
/ 26 октября 2019

Вся история:

Обычно я использую docker ps, чтобы проверить состояние контейнера, чтобы увидеть, есть ли перезапуск контейнера.

Недавно я установил одну гипер-v машина в windows10, также установите Ubuntu18.04 на эту машину hyper-v. Тем временем я устанавливаю docker в эту ubuntu18.04.

Я добавляю некоторые контейнеры в эту ubuntu18.04, затем я непосредственно выключаю компьютер с windows10 перед тем, как идти спать.

Позже, когда яВспомните эту вещь снова. Я запустил win10 pc, ssh на эту виртуальную машину и сделал следующее:

cake@cake:~$ docker ps
CONTAINER ID  IMAGE       COMMAND                  CREATED        STATUS        PORTS                  NAMES
0ac07c24c537  wordpress   "docker-entrypoint.s…"   5 days ago     Up 5 days     0.0.0.0:8080->80/tcp   gg_wordpress_1
3c47669c927f  mysql:5.7   "docker-entrypoint.s…"   5 days ago     Up 5 days     3306/tcp, 33060/tcp    gg_db_1

Проблема:

Вы можете увидеть созданные контейнеры за 5 днейназад, что нормально, но STATUS показало, что контейнеры уже работают в течение 5 дней.

Я уверен, что я закрыл windows10 pc в течение этих 5 дней, тем временем после поиска выше, я также перепутал win10проверить, можно ли получить доступ к 8080 одной контейнерной службы? (Результат уверен, что к ней нельзя получить доступ). Затем я перезагружаю ПК win10, снова выполняю docker ps, я полагаю, что STATUS - это что-то вроде 1 second ago, но все же 5 days ago.

ПРИМЕЧАНИЕ: не предлагатьdocker for windows with MobyLinuxVM in hyperv, я просто хочу знать, почему возникла моя проблема.

ОБНОВЛЕНИЕ:

Как я уже сказал в комментариях:

ЕслиВыполните uptime в Bash, он покажет: 20:57:41 up 1 day, 2:23, 1 user, load average: 0.00, 0.00, 0.00

Я могу объяснить это одной ситуацией: приостановить гипер-v. Это заставит виртуальную машину остановиться, пока uptime перестанет считать, но docker ps все равно не прекратит считать, он просто посчитает в реальном времени. Не знаю почему.

Итак, моя ситуация может быть следующей:

a) 5 дней назад я запускаю контейнеры.

b) 4 дня назад я делаю паузуVM (не уверен, может быть, другая операция аналогична)

c) Просто сейчас для некоторых операций не уверен, что VM приостановлена.

d) Тогда я мог бы с uptime увидеть VMначать с 1 дня;но с docker ps все еще вижу контейнер в течение 5 дней.

e) В течение этих пяти дней я определенно не выключал ВМ;Я просто не один раз отключил физическую машину windows10. Но это, кажется, не влияет на счетчик времени для виртуальной машины Linux.

Таким образом, кажется, что прямое выключение машины win10 не влияет на счетчик времени виртуальной машины hyper-v linux.

Другое слово: если попропустите паузу ВМ, если мы напрямую выключим win10. Затем, хотя служба в Hyper-V VM также прерывается, но когда Linux win10 и hyper-v VM возвращаются обратно, виртуальная машина ведет себя как никогда и не останавливается, uptime также счетчик в течение периода остановки Hyper-V VM. Кажется, теперь сузьте мою проблему до этого поведения hyper-v.

Кто-нибудь может объяснить это поведение hyper-v?

...