Ilya
т.е. добавить в dockerfile run ...............
я так понял, что там уже есть RUN apt-get install ...
Ilya
дописать пакет в нужный список, собрать из всего этого образ
First
а потом для каждого контейнера запустить .......... ?
Ilya
протегировать его более старшей версией, указать всем остальным образам, чтобы наследовались от новой версии базового образа.
First
понял
First
Спасибо буд пробовать
First
буду*
First
ну я его использую как вьювер результата
First
чтоб не делать docker ps -a
First
и так далее
First
Спасибо еще раз
First
работает, спасибо.
SeniorAnykey
не дружат и все
Скопируй ошибку, сходи с ней гугол. И поправь конфиг мускуля.
🤫
Сюда б не писал
SeniorAnykey
То ходил уже...
Плохо ходил значит. К докеру и композу оно никакого отношения не имеет. Обычные траблы мускуля и его идиотской системы логинов.
First
Shaz имеет ввиду что проблема не в докере, а значит офтоп
First
гуглите ошибку мускула
First
Еще один вопрос. Я изменил содержимое dockerfile чтоб добавить в базовый образ какой то пакет, если я пересоздам контейнер то изменения в контейнере я потеряю?
Ilya
да.
Ilya
не надо делать изменений "в контейнере".
Ilya
изменения надо делать в образе.
First
но у меня в каждом контейнере разные настройки и елси я изменю базовый образ а потом пересоздам контейнеры они будут все "голые"
First
Верно?
Ilya
что такое "разные настройки"?
First
ну например контейнер с пхп с мускулом с апачем
Oleg
Ребятки, помогите разобраться, как зашарить данные между двумя базами? Вот такой файлик FROM alpine:latest as base1 ARG v1=World ENV v1=$v1 FROM alpine:latest as base2 RUN echo ${v1} И он не работает docker build -t "envtest:1" . Sending build context to Docker daemon 2.048kB Step 1/5 : FROM alpine:latest as base1 ---> 3fd9065eaf02 Step 2/5 : ARG v1=World ---> Using cache ---> 8e3bfb635edf Step 3/5 : ENV v1=$v1 ---> Using cache ---> 46429a9b491b Step 4/5 : FROM alpine:latest as base2 ---> 3fd9065eaf02 Step 5/5 : RUN echo ${v1} ---> Using cache ---> b697f4ab4c7b
First
я пересобрал образ добавив в него apt-get install mc
First
Теперь я могу как то сделать так чтоб мои пхп апач и мускул остались установлены и настроены, но чтоб в них уже был mc
Ilya
погоди
Ilya
поправь меня, если я ошибаюсь.
Ilya
но ты взял какой-то образ, запустил его в контейнере. зашел туда и поставил уже там апт-гетом апач например?
Ilya
и потом еще сделал docker commit, чтобы этот апач там остался?
First
не сделал
First
комит не запусскал
First
нет
First
Я пока теорию спрашиваю
First
Я ничего еще не делаю ))
First
Я спрашиваю как это правильно должно быть сделано в теории
First
Я скачал докерфайл сбилдил имидж создал 3 контейнера с его использованием в каждом из них поставил по 1 программе, пусть это будет апач мускул и пхп потом я понимаю что всем им нужен МИДНАЙТ Я меняю содержимое докерфайла, билжу его снова, Теперь я должен сказать контейнерам чтоб они использовали новый образ В этих 3х контейнерах останется установлен апач в первом, пхп во втором и мускул в третьем
First
???
First
И во всех начнет рабоать миднайт ?
First
Если некогда отвечать на мои тупые вопросы не отвечайте я методом научного тыка за час пойму как это устроенно )))
Ilya
изначально все сделано через одно место
Ilya
потому что ты что-то ставил в контейнерах.
Ilya
должно быть в твоем случае (раз ты так хочешь базовый образ) примерно следующим образом
Ilya
у тебя есть докерфайл базового образа, в котором ты ставишь базовый софт, который необходим везде.
Ilya
у тебя есть докерфайл образа с мускулом, который наследуется от базового, делает RUN apt-get install mysql-server, копирует (плохо) туда my.cnf, запускает (CMD) mysqld_safe
Ilya
хорошим способом тут будет не копировать my.cnf, а хотя бы монтировать (VOLUME) конфиг
Ilya
еще лучшим образом -- конфигурировать все через переменные окружения. для этого в ENTRYPOINT должен быть вписан некий враппер, который все сделает.
Ilya
проще для этого взять готовый образ с докерхаба.
Ilya
не стоит заходить в запущенный контейнер и что-то там ставить. т.е. это конечно можно делать для теста, но не надо полагаться на это.
First
Про вольюмы уже прочел. Спасибо. А потом я вдруг понимаю через год что я ЗАБЫЛ поставить vim , а контейнеров уже 100! Каковы мои действия?
Ilya
контейнер эфемерен. суть его в том, что он в любой момент может заново развернуться из образа и повторить свое изначальное состояние.
Ilya
но это глупости все.
Ilya
во-первых, если у тебя сто образов, у тебя должен быть какой-то CI/CD пайплайн для этого дела, потому что руками это не делается.
Ilya
во-вторых, тебе не нужен vim в контейнере с бд.
Ilya
да и вообще, тебе не нужен vim ни в одном контейнере.
First
ну я ж например )))
Ilya
это плохой пример
Ilya
потому что суть какого-то отдельного сферического контейнера в вакууме в запуске какой-то штуки
Ilya
например бд
Ilya
в контейнере не должно быть ничего, кроме этой самой бд
Ilya
оно там попросту лишнее
Ilya
поэтому я немного не понимаю, зачем тебе вообще какие-то базовые образы.
Ilya
ты пытаешься применять контейнеры как виртуальные машины
Ilya
они не для этого.
First
ну да, я сравниваю с виртуалками
First
надо переучиваться )))
Ilya
и еще, совет на будущее, основываться на бубунте -- это тухло.
Ilya
когда у тебя действительно будет 100 образов, ты будешь плакать от того, сколько места это все у тебя сожрет.
First
Я с винды слез пол года назад, дайте мне освоиться )))
Ilya
https://hub.docker.com/_/alpine/ вот тебе хороший базовый образ
First
окей, а если образы я использую не для конечного сервера а для разработки, т.е. я там постоянно что то компилю, доставляю либы. какова инфраструктура оптимальная ? 1 имидж альпин голый и создавать контейнеры по мере необходимости?
Ilya
в идеале это выглядит так: запустить голый альпин; понять, что надо сделать, чтобы все поставилось; вписать это все в докерфайл; собрать образ
First
Ясно. Буду курить маны. Концепция ясна более менее