2016-09-28 3 views
0

Я хотел бы обновить контейнер в файле для архивирования докеров: например. от sharelatex от 0.2 до v0.3.10. Как я могу это сделать без потери других контейнеров и их данных? Возможно ли создать резервную копию текущего контейнера и вернуться к нему, если обновление не удалось?Обновление докер-контейнера в составе докер-компиляции

Мой текущий докер-compse файл:

version: '2' 
services: 
    sharelatex: 
     restart: always 
     image: sharelatex/sharelatex:0.20 
     container_name: sharelatex 
     depends_on: 
      - mongo 
      - redis 
     privileged: true 
     ports: 
      - 80:80 
     links: 
      - mongo 
      - redis 
     volumes: 
      - ~/sharelatex_data:/var/lib/sharelatex 
     environment: 
      SHARELATEX_MONGO_URL: mongodb://mongo/sharelatex 
      SHARELATEX_REDIS_HOST: redis 
      SHARELATEX_APP_NAME: 'Our ShareLaTeX' 

    mongo: 
     restart: always 
     image: mongo 
     container_name: mongo 
     expose: 
      - 27017 
     volumes: 
      - ~/mongo_data:/data/db 

    redis: 
     restart: always 
     image: redis 
     container_name: redis 
     expose: 
      - 6379 
     volumes: 
      - ~/redis_data:/data 

ответ

1

Вы всегда должны хранить какие-либо важные состояния (данных) в объеме. Контейнер всегда должен рассматриваться как одноразовый, поэтому при обновлении томов повторно используются, и вы не теряете никаких данных или состояний.

По умолчанию docker-compose up попытается повторно использовать любые существующие контейнеры, если их конфигурация не изменилась. Если вы меняете только одну услугу, остальные сервисные контейнеры не будут остановлены.

В вашем случае похоже, что вы уже используете тома, поэтому простое изменение версии и запуск docker-compose up должны делать то, что вы хотите.

+0

Спасибо! Значение, когда я меняю 'image: sharelatex/sharelatex: 0.20' на' image: sharelatex/sharelatex: latest' в .yml, тогда 'docker-compose up' создаст новый контейнер sharelatex с именем' sharelatex' и заменить старый? – bonanza

+1

Это правильно. – dnephin

+0

Еще раз спасибо! Есть ли способ сохранить старый как резервную копию? Как мне изменить значение .yml, если я хочу, чтобы старый вернулся? – bonanza