George
Профит
George
Они объявляются в докер файле и позволяют не писать изменяемые данные на верхний слой эфемерной ФС контейнера
George
(+) быстродействие (+) Ты не залипнешь, если используется драйвер devicemapper, у которого кэп 10 гиб на контейнер
Рашид
>(+) быстродействие Быстрее чем именованное связывание томов? >(+) Ты не залипнешь, если используется драйвер devicemapper, у которого кэп 10 гиб на контейнер Спасибо, почитаю про это :)
George
> Быстрее чем именованное связывание томов? ты прочти еще раз, что я написал. Сравниваю кейс - нет вольюма вообще (не определен нигде), определен в докер-файле
George
разницы по скорости между anonymous & named volumes нет от слова совсем
George
а вот bind mount vs volume может быть разная производительность, хотя бы потому что они могут влететь в разные разделы ... или даже на разные диски
Рашид
> Быстрее чем именованное связывание томов? ты прочти еще раз, что я написал. Сравниваю кейс - нет вольюма вообще (не определен нигде), определен в докер-файле
Мне скорее было интересно , почему бы не использовать именованное связывания, плохо сформулировал вопрос, сорри)
George
разницы нет, ога. Просто ты иногда не хочешь, чтобы пользоавтель твоего докер-образа вступил в говно
George
и определеяешь его через докерфайл. А уж хочет он именованный или не именованный (т.е. пользователь докер образа) - это его персональное дело
Рашид
Кажется понял тебя дружище) , образ mysql тому пример)
George
да
Рашид
Благодарю😊
Maxim
просто трудно каждый раз писать docker run --rm -ti \ --name=ctop \ --volume /var/run/docker.sock:/var/run/docker.sock:ro \ quay.io/vektorlab/ctop:latest
Думаю коллеги меня поправят если я ошибся в написании команд, последовательности выполнения шагов, прошу не судить строго, решил написать пошаговую инструкцию (пишу по памяти) для новичков в bash с названием Если вы устали каждый раз печатать эту длинную строчку Вам нужно: 1) создайте пустой файлик touch ~/.local/bin/start-ctop 2) В этом файлике можно написать один раз вашу команду, для этого откройте его, например с помощью nano, vim или gedit если используете "мышку и рабочий стол", и добавьте в него вашу команду с указанием в первой строке "с помощью чего запускать вашу команду" (так должно быть понятней), например вот так ваша команда будет выполнена с помощью bash: #!/usr/bin/env bash docker run --rm -ti \ --name=ctop \ --volume /var/run/docker.sock:/var/run/docker.sock:ro \ quay.io/vektorlab/ctop:latest 3) Закрываете с сохранением (не знаю каким редактором пользуетесь) сохраните и закройте файлик. 4) добавьте в PATH директорию ~/.local/bin/, для этого откройте файлик nano ~/.bashrc и добавьте в конец строчку PATH=$PATH:~/.local/bin/ 5) перезапустите ваш "комплюктер" ) можно просто применить изменения к bash, но вам скорее всего проще и понятней будет сделать рестарт вашей машины. 6) после рестарта можете открыть терминал и набрать команду start-ctop и нажать Enter, будет выполнен сценарий из файла ~/.local/bin/start-ctop Так же будет работать автодополнение по клавише TAB 7) конец магии ) Дополнения или исправления как и здравая и аргументированная критика - приветствуются, инструкция не претендует на "идеальный мануал", на мой взгляд в таком ключе информация будет понятней "новичкам".
Navern
Зачем, если есть alias и bashrc?
Maxim
Зачем, если есть alias и bashrc?
Есть много причин: "первая причина это ты, а вторая - все все твои мечты" (Шучу) Например 1) в alias сложно добавить логику, 2) использовать env с логикой 3) использовать результаты выполнения других команд 4) alias лучше использовать для сокращения названий ваших скриптов с ключами как например ll = ls -lah, для ваших скриптов например можно alias ctop = my-ctop --key1 --key2=val2 Можно и дальше продолжать список, но вектор вам должен быть понятен, особенно когда вы держите ваши файлы в репе и периодически обновляете
Navern
function для всего остального)
Navern
Ну в описанной иаске больше походило на алиас прост
Maxim
function для всего остального)
Как выстрел - коротко и не понятно )
Navern
Как выстрел - коротко и не понятно )
В башрц можно обьявлять функции и там можно мини логику делать + использовать аргументы
Maxim
В башрц можно обьявлять функции и там можно мини логику делать + использовать аргументы
Если вам удобно и это работает то значит ваш способ тоже имеет право на жизнь и он ничем не хуже чем предложенный мной. Я так и написал "на мой взгляд для новичков это будет удобней и не претендует на идеальный мануал", верно? ;)
Navern
Я просто как раз с точки зрения новичка размышлял, что алиас добавлять в башрц проще обычно) Ну можно воспринять это просто как отдельный способ сделать задачу) не говорю что выше плохой способ)
Navern
Обычно если я в свои скрипты хочу добавить аргументв то пишу на питоне уже)
Navern
Так что наверное про баш ничего не скажу)
Maxim
Обычно если я в свои скрипты хочу добавить аргументв то пишу на питоне уже)
Тоже круто, но не везде есть питон, поэтому иногда нужно быть знакомым с возможностями bash для быстрого решения задачи и создания сценария для среды без питона, думаю вы со мной согласитесь
Navern
Тоже круто, но не везде есть питон, поэтому иногда нужно быть знакомым с возможностями bash для быстрого решения задачи и создания сценария для среды без питона, думаю вы со мной согласитесь
Да я не спорю) Просто говорю про свой кейс. Так что на вопрос выше мне сложно дать ответ:) В целом я старвюсь избегать сложных баш скриптов
Maxim
Да я не спорю) Просто говорю про свой кейс. Так что на вопрос выше мне сложно дать ответ:) В целом я старвюсь избегать сложных баш скриптов
Так точно, нужно избегать сложных скриптов, так как поддержка становится очень сложной и приходится тратить много времени
Maxim
Да я не спорю) Просто говорю про свой кейс. Так что на вопрос выше мне сложно дать ответ:) В целом я старвюсь избегать сложных баш скриптов
Если обратить внимание на различные Dockerfile что разбросаны по github то повсеместно используются bash скрипты, отсюда можно сделать вывод что необходимо хотя бы немножко понимать "как это работает" и "зачем сделали именно так", это позволяет вносить свои изменения в готовые решения без питона. Python - это очень крутой ЯП, но если понимать и Python и Bash то это как в известной поговорке: "одна голова - хорошо, а две - лучше" Думаю и здесь вы со мной согласитесь ;)
Максим
Тут мучаюсь не могу установить openjdk-8-jdk выдет ошибку
Максим
Setting up openjdk-8-jre-headless:amd64 (8u222-b10-1~deb9u1) ... update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/rmid to provide /usr/bin/rmid (rmid) in auto mode update-alternatives: error: error creating symbolic link '/usr/share/man/man1/rmid.1.gz.dpkg-tmp': No such file or directory dpkg: error processing package openjdk-8-jre-headless:amd64 (--configure): subprocess installed post-installation script returned error exit status 2 dpkg: dependency problems prevent configuration of openjdk-8-jdk-headless:amd64: openjdk-8-jdk-headless:amd64 depends on openjdk-8-jre-headless (= 8u222-b10-1~deb9u1); however: Package openjdk-8-jre-headless:amd64 is not configured yet. dpkg: error processing package openjdk-8-jdk-headless:amd64 (--configure): dependency problems - leaving unconfigured dpkg: dependency problems prevent configuration of openjdk-8-jdk:amd64: openjdk-8-jdk:amd64 depends on openjdk-8-jdk-headless (= 8u222-b10-1~deb9u1); however: Package openjdk-8-jdk-headless:amd64 is not configured yet. dpkg: error processing package openjdk-8-jdk:amd64 (--configure): dependency problems - leaving unconfigured dpkg: dependency problems prevent configuration of openjdk-8-jre:amd64: openjdk-8-jre:amd64 depends on openjdk-8-jre-headless (= 8u222-b10-1~deb9u1); however: Package openjdk-8-jre-headless:amd64 is not configured yet. dpkg: error processing package openjdk-8-jre:amd64 (--configure): dependency problems - leaving unconfigured Processing triggers for libc-bin (2.24-11+deb9u3) ... Errors were encountered while processing: logstash openjdk-8-jre-headless:amd64 openjdk-8-jdk-headless:amd64 openjdk-8-jdk:amd64 openjdk-8-jre:amd64 E: Sub-process /usr/bin/dpkg returned an error code (1)
Максим
Как быть, что делать?
George
> update-alternatives: error: error creating symbolic link '/usr/share/man/man1/rmid.1.gz.dpkg-tmp': No such file or directory вероятно, мана не хватает? доустановки документацию в образ
Maxim
Как быть, что делать?
Пробовали посмотреть как устроены Dockerfile в репозитории https://hub.docker.com/r/adoptopenjdk/openjdk8 ?
Andrey
Setting up openjdk-8-jre-headless:amd64 (8u222-b10-1~deb9u1) ... update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/rmid to provide /usr/bin/rmid (rmid) in auto mode update-alternatives: error: error creating symbolic link '/usr/share/man/man1/rmid.1.gz.dpkg-tmp': No such file or directory dpkg: error processing package openjdk-8-jre-headless:amd64 (--configure): subprocess installed post-installation script returned error exit status 2 dpkg: dependency problems prevent configuration of openjdk-8-jdk-headless:amd64: openjdk-8-jdk-headless:amd64 depends on openjdk-8-jre-headless (= 8u222-b10-1~deb9u1); however: Package openjdk-8-jre-headless:amd64 is not configured yet. dpkg: error processing package openjdk-8-jdk-headless:amd64 (--configure): dependency problems - leaving unconfigured dpkg: dependency problems prevent configuration of openjdk-8-jdk:amd64: openjdk-8-jdk:amd64 depends on openjdk-8-jdk-headless (= 8u222-b10-1~deb9u1); however: Package openjdk-8-jdk-headless:amd64 is not configured yet. dpkg: error processing package openjdk-8-jdk:amd64 (--configure): dependency problems - leaving unconfigured dpkg: dependency problems prevent configuration of openjdk-8-jre:amd64: openjdk-8-jre:amd64 depends on openjdk-8-jre-headless (= 8u222-b10-1~deb9u1); however: Package openjdk-8-jre-headless:amd64 is not configured yet. dpkg: error processing package openjdk-8-jre:amd64 (--configure): dependency problems - leaving unconfigured Processing triggers for libc-bin (2.24-11+deb9u3) ... Errors were encountered while processing: logstash openjdk-8-jre-headless:amd64 openjdk-8-jdk-headless:amd64 openjdk-8-jdk:amd64 openjdk-8-jre:amd64 E: Sub-process /usr/bin/dpkg returned an error code (1)
Зависимости нет ?
Aquarius
нет. я завязал
Maxim
Не догадался. Спасибо. Попробую изучить
Зачем пробовать изучать? Берите нужный и используйте, не забудьте добавить ваше приложение в образ
Kana
Ребят, такая проьлема, мне нужно установить контейнер с селениумом и хромом версии 70-73 (последняя 74) Проблема в том что контейнер с селениумом по дефолту пулит последнюю версию хрома. Вот докерфайл: # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! # NOTE: DO *NOT* EDIT THIS FILE. IT IS GENERATED. # PLEASE UPDATE Dockerfile.txt INSTEAD OF THIS FILE # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! FROM selenium/node-chrome:3.141.59-titanium LABEL authors=SeleniumHQ USER seluser #==================================== # Scripts to run Selenium Standalone #==================================== COPY start-selenium-standalone.sh /opt/bin/start-selenium-standalone.sh #============================== # Supervisor configuration file #============================== COPY selenium.conf /etc/supervisor/conf.d/ EXPOSE 4444
Kana
В selenium/node-chrome:3.141.59-titanium есть аргумент с версией хрома
Kana
А в selenium/chrome который его использует аргумента нет
Dan
⚡️ Привет, на связи Слёрм @slurmnews. Хочешь лучше понять DevOps? 4-6 сентября ждём тебя в Санкт-Петербурге, в конференц-зале Selectel, на курсе Слёрм DevOps. Мы начнем с азов: правильной работы с Git. Гитом пользуются все, но знали бы вы, какие ошибки нам приходилось встречать. Потом посмотрим на DevOps глазами разработчика. Выстроим CI/CD. Разберем IaC. Настроим тестирование и мониторинг. Сделаем сборку, вывод и аналитику логов. Обсудим SRE. Семь инженеров и архитекторов расскажут о своем подходе и своих кейсах. Будут выступать Иван Круглов (Principal Developer в Booking.com), Артем Галонский, (CTO «БюроБюро»), Эдуард Медведев из stackstorm.com, Павел Селиванов, архитектор решений Southbridge, Сергей Бондарев и Владимир Гурьянов, инженеры Southbridge. По всем темам будут практические задания, чтобы можно было вернуться на работу и внедрить то, что понравилось. Будут бонусы, например, Ansible-плейбук создания отказоустойчивого кластера БД, которым пользуются в Southbridge. 👉 Регистрация clck.ru/HaELt
kSandr
кто пойдет, скиньте потом плейбук в чатик )
Levan (Leo)
Я хочу закинуть два доскер файла в одну папку . Как правильно вписать названия этих файлов , что бы не было кнфликта ?
George
Dockerfile.1 Dockerfile.2
George
потом выбирай через флаг -f
George
docker build -f ./Dockerfile.1 .
Levan (Leo)
Оу, спасибо !
kSandr
Я хочу закинуть два доскер файла в одну папку . Как правильно вписать названия этих файлов , что бы не было кнфликта ?
если начнется конфликт сливайся, скажи что ты невиноват и тебе ребята посоветовали, можешь валить все на меня ... все что угодно, дабы небыло конфиликтов )
Levan (Leo)
Ну , тогда придётся закинуть их в отдельные папки
Michail
нубский вопрос - если я хочу пару папок статики, типо node_modules - запаковать в контейнер - чтобы потом другим коллегам не надо было ставить зависимости - это реально?
Anatoly
Добрый вечер. Пытаюсь решить задачку: необходимо создать докерфайл, чтобы при запуске контейнера из этого образа без аргументов выводилось "Hello world", а при запуске с аргументом <arg> выводилось "Hello <arg>!". Понимаю что нужно использовать связку ENTRYPOINT и CMD или писать скрипт, но не понимаю как писать условие. Есть мысли как это делается?
Anatoly
George
В нем использовать что-то типа @$ для аргумента
Andrey
ну вешаешь на arg дефолт world и делов
George
Или в дефолтный cmd :-)
Michail
пытаюсь взять nodejs alpine и сделать просто RUN apk add bash получаю
Michail
пробовал вначале сделать RUN apk update --no-cache
George
и?
George
сделай apk update && apk add и посмотри
George
может зеркала кривые
George
может с инетом косяк
Michail
может с инетом косяк
на этом лаптопе может быть тк корпоративный, я так и думал, попробую на домашнем
Michail
может с инетом косяк
но как то образа с dockerhub он качает
Michail
и сами эти адреса http://dl-cdn.alpinelinux.org/alpine/v3.7/main в браузере нормально открваются
George
ну хз. может прокси прописан
Michail
ну хз. может прокси прописан
да скорее всего, тут много говна корпоративного наверчено ((
Stepan
Всем добра. Залип с докером в ubunte 16.04 не удаляется, не устанавлевается и не запускается( Может кто встречался или знает как удалить, и переустановить заново? В логах это: Subject: Unit docker.socket has finished start-up -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Unit docker.socket has finished starting up. -- -- The start-up result is done. Aug 14 18:22:13 kurakste systemd[1]: docker.service: Start request repeated too quickly. Aug 14 18:22:13 kurakste systemd[1]: Failed to start Docker Application Container Engine. -- Subject: Unit docker.service has failed
Andrey
Как удаляешь?
Stepan
dockerd —debug что выдает?
Зачетный вопрос: Your Linux kernel version 2.6.32-042stab127.2 is not supported for running docker. Please upgrade your kernel to 3.10.0 or newer.