Как я могу создать изображение из контейнера, работающего в Kubernetes? - PullRequest
0 голосов
/ 14 мая 2018

Я хочу иметь возможность выполнить что-то вроде docker commit для контейнера, работающего внутри модуля Kubernetes.

Моментальные снимки тома не соответствуют моим критериям, потому что я хочу сделать снимок полного состояния контейнера, а нетолько данные, смонтированные по какому-либо пути.

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

Похоже, запрос связанной функции выполнен, но ничего не получено.

Я использую GoogleДвигатель Kubernetes, но я готов перейти на другого провайдера, который легко это поддерживает.

1 Ответ

0 голосов
/ 15 мая 2018

Запустите оболочку bash внутри контейнера с именем guest:

[root@host ~]# docker run -i -t --name guest oraclelinux:6.6 /bin/bash
[root@guest ~]#

Если вы используете веб-прокси, отредактируйте конфигурацию yum на гостевой системе, как описано в Руководство администратора Oracle Linux для выпуска 7 .

Установите пакет httpd:

[root@guest ~]# yum install httpd

При необходимости создайте веб-контент, который будет отображаться в иерархии каталогов /var/www/html на гостевой.

Выйдите из гостя с помощью команды docker stop на хосте:

[root@host ~]# docker stop guest
guest

Создайте изображение mymod/httpd с тегом v1, используя идентификатор остановленного контейнера:

[root@host ~]# docker commit -m "ol6 + httpd" -a "A N Other" \
`docker ps -l -q` mymod/httpd:v1
8594abec905e6374db51bed1bfb208804cfb60d96b285efb897db581a01676e9

Используйте опции -m и -a для документирования изображения и его автора. Команда возвращает полную версию идентификатора нового изображения.

Если вы используете команду docker images, новое изображение теперь появится в списке:

  [root@host ~]# docker images
    REPOSITORY    TAG         IMAGE ID       CREATED       VIRTUAL SIZE
    mymod/httpd   v1          8594abec905e   2 minutes ago 938.5 MB
    oraclelinux   6           9ac13076d2b5   5 days ago    319.4 MB
    oraclelinux   6.6         9ac13076d2b5   5 days ago    319.4 MB
    oraclelinux   latest      073ded22ac0f   5 days ago    265.2 MB
    oraclelinux   7           073ded22ac0f   5 days ago    265.2 MB
    oraclelinux   7.0         073ded22ac0f   5 days ago    265.2 MB

Удалить контейнер с именем guest.

    # docker rm guest
    guest

Теперь вы можете использовать новое изображение для создания контейнера, который работает как веб-сервер, например:

 # docker run -d --name newguest -p 8080:80 mymod/httpd:v1 /usr/sbin/httpd -D FOREGROUND
 7afbbefec5191f632e149f85ae10ed0ba88f1c545daad18cb930e575ef6a3e63
...