Назад | Перейти на главную страницу

Как обновить Docker (до 1.10.0) на CentOS7?

Docker 1.8.2-10.el7.centos был установлен и смог работать на CentOS7.

Чтобы обновить докер эта почта был прочитан, и были выданы следующие команды:

Проблема

Когда докер запущен:

systemctl start docker

кажется, что он завис, а / var / log / messages указывает, что:

Feb 11 00:22:01 localhost systemd: Device dev-disk-by\x2duuid-f00f4f0a\x2dba57\x2d468b\x2dba82\x2d72f1bb087bbb.device appeared twice with different sysfs paths /sys/devices/virtual/block/loop0 and /sys/devices/virtual/block/dm-6
Feb 11 00:22:05 localhost docker: time="2016-02-11T00:22:05.977110830+01:00" level=info msg="calculated checksum for layer 26de6fe292b2275378ce421742105813ee98fb49a5e0e45c1fd89e20eedc2c31: sha256:0c42efc496d9944258fb38ccfa64f53c32433a24daa3ad64144e48c5deb1c78c"
Feb 11 00:22:06 localhost kernel: EXT4-fs (dm-8): mounted filesystem with ordered data mode. Opts: (null)
Feb 11 00:22:06 localhost systemd-udevd: conflicting device node '/dev/mapper/docker-253:0-68595821-51009a2811797c49222fd5f9cb9e38fbe4fca9cf2a7fcfb1151d34c0b545a42a' found, link to '/dev/dm-8' will not be created
Feb 11 00:22:06 localhost systemd: Device dev-disk-by\x2duuid-f00f4f0a\x2dba57\x2d468b\x2dba82\x2d72f1bb087bbb.device appeared twice with different sysfs paths /sys/devices/virtual/block/loop0 and /sys/devices/virtual/block/dm-8

Обсуждение

  1. Странно то, что бинарник обновился:

    [root @ localhost] # docker -v Докер версии 1.10.0, сборка 590d5108

но сервис не может быть запущен.

  1. Хотя 1.10.0 не запускается в CentOS7, docker 1.9.0 может запускаться: curl -L https://get.docker.com/builds/Linux/x86_64/docker-1.9.0 > /usr/bin/docker; chmod +x /usr/bin/docker

Вопрос

Как обновить Docker до 1.10.0 на CentOS7?

docker 1.10 миграция требует слишком много времени

Ваш докер 1.10 запустится, если вы можете подождать день после его перезапуска.

Все ваши текущие изображения, теги и контейнеры автоматически переносятся на новую основу при первом запуске Docker Engine 1.10. Перед загрузкой вашего контейнера демон вычислит все необходимые контрольные суммы для ваших текущих данных, и после его завершения все ваши изображения и теги будут иметь новые безопасные идентификаторы.

Хотя это простая операция, вычисление контрольных сумм SHA256 для ваших файлов может занять время, если у вас много данных изображения. В среднем вы должны предполагать, что мигратор может обрабатывать данные со скоростью 100 МБ / с. В это время ваш демон Docker не будет готов отвечать на запросы.

Посмотри пожалуйста Вот.

драйвер хранилища docker по умолчанию мог быть изменен.

У меня была такая же проблема, и сегодня мне наконец удалось запустить docker 1.10. Моя проблема была в команде запуска докера. Казалось, я использовал докер с devicemapper драйвер хранилища и драйвер докера 1.10 не совпадали.

Вот что я пробовал.

1. Удалите сетевые файлы.

Когда я один раз отказался от обновления докера 1.10 и понизил его с 1.10 до 1.9, 1.9 не запускался. Это началось после того, как я удалил эти файлы. Это может не повлиять на вашу проблему, но я решил, что теперь удаляю их перед обновлением докера.

mkdir /var-lib-docker-network-files  
mv /var/lib/docker/network/files/* /var-lib-docker-network-files

2. Перезаписать ExecStart как ваша индивидуальная команда.

Здесь вы можете увидеть команду запуска по умолчанию;

vi /lib/systemd/system/docker.service 

Мой был полностью таким же, как и в официальном репозитории.

ttps: //github.com/docker/docker/blob/master/contrib/init/systemd/docker.service

Так должно быть;

ExecStart=/usr/bin/docker daemon -H fd://

У меня эта команда не сработала. Итак, я создал файл, который переопределил команду как упаковывающий файл conf;

vi /etc/systemd/system/docker.service.d/docker.conf 

[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon -s devicemapper -H fd://

3. Перезагрузите и запустите

Обязательно перезагрузите systemd перед запуском докера.

systemctl daemon-reload
service docker start

К вашему сведению, эта команда удалит все образы докеров.

Я увидел еще одну строку ExecStart в Вот.

vi /etc/systemd/system/docker.service.d/docker.conf 

[Service]
ExecStart=
ExecStart=docker daemon -D -s overlay

Хотя это сработало и заставило докер 1.10 запуститься, все мои образы докеров исчезли. Я был очень раздражен из-за docker images ничего не вернул. Но у меня все еще было много файлов реальных изображений в /var/lib/docker/devicemapper/ поэтому я подумал, что эта команда ссылается на странный каталог. Тогда я получил ответ, это devicemapper.

Официальный документ

Вы можете увидеть подробности Вот. Возможно, нам придется узнать о демоне.