Daniil 👉👈
видимо у тебя не сворм ?
Alexandr
в том то и дело что сварм
Alexandr
без этой строчки кстати все работает
Daniil 👉👈
наоборот, строчка означает что надо запускать везде кроме лидера
Alexandr
аааа теперь я понял
Alexandr
у меня 1 нодовый сварм
Alexandr
все спасибо почаны я врубился
Дурак из фильма
И снова я про всякие кэши, слои и вольюмы. В докере делаю `npm build`оказывается, оно не ребилдит нифига, даже если исходиники поменялись. Поэтому если до сборки в контейнере и вообще до запуска докера, удалить каталог ./build, то внезапно изменения появляются в билде. Первое, что я решил сделать, это прямо в докер файле перед шагом сборки делать удаление каталога ARG backend_url='= "http://127.0.0.1:8000/graphql";' WORKDIR /build ADD ./ /build RUN rm -rf build/build RUN pwd; ls -l /build/; ls -l ./src/utils/const/ RUN /bin/bash -c "sed -ie 's|=.*|$backend_url|g' ./src/utils/const/api.js" RUN npm install RUN npm run build Но это нифига не помогло, видимо удаление произошло только в каком-то слое или ещё какая-то магия случилась, но моих изменений в билде не оказалось. При этом если до запуска докера удалить этот каталог вручную, то всё нормально. В связи с этим вопрос, как правильно чистить этот кэш сборки при запуске контейнера? Не хочется для этого ещё какой-то внешний баш-скрипт прикостыливать.
Timur
Доброго времени суток
Timur
Подкажите поиз по организации сети macvlan
Timur
чтобы ip прибитый к контейнеру пинговался с о всего L2 домена
Timur
есть мануал
Timur
https://docs.docker.com/v17.09/engine/userguide/networking/get-started-macvlan/#pre-requisites
Timur
ну создаю виртуальную сеть
Timur
docker network create -d macvlan --subnet=192.168.255.192/27 --gateway=192.168.255.209 -o parent=ens192 my-macvlan-net
Timur
прибиваю к контейнеру
Timur
docker run --rm --net=my-macvlan-net --ip=192.168.255.216 --cap-add=SYS_ADMIN -d -e "container=docker" -v /sys/fs/cgroup:/sys/fs/cgroup centos7-bit-dev /usr/sbin/init
Timur
прибивается
Timur
[root@f6dac87059f8 /]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 9: eth0@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default link/ether 02:42:c0:a8:ff:d8 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 192.168.255.216/27 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::42:c0ff:fea8:ffd8/64 scope link valid_lft forever preferred_lft forever
Timur
если создать контейнер рядом то пингуют они друг друга
Timur
н оне хостмашина(там где сам докер) , не др хосты подсети не пингуют его
Timur
192.168.255.212 докер
Timur
216 контейнер
Timur
arp контейнера тоже не виден с 212
Timur
как бы должно работать, а нет, 2 дня уже гуглю
Timur
обобщу вопрос: как прибить ip к контейнеру, чтобы он был доступен из всей подсети?
Ильдар
И снова я про всякие кэши, слои и вольюмы. В докере делаю `npm build`оказывается, оно не ребилдит нифига, даже если исходиники поменялись. Поэтому если до сборки в контейнере и вообще до запуска докера, удалить каталог ./build, то внезапно изменения появляются в билде. Первое, что я решил сделать, это прямо в докер файле перед шагом сборки делать удаление каталога ARG backend_url='= "http://127.0.0.1:8000/graphql";' WORKDIR /build ADD ./ /build RUN rm -rf build/build RUN pwd; ls -l /build/; ls -l ./src/utils/const/ RUN /bin/bash -c "sed -ie 's|=.*|$backend_url|g' ./src/utils/const/api.js" RUN npm install RUN npm run build Но это нифига не помогло, видимо удаление произошло только в каком-то слое или ещё какая-то магия случилась, но моих изменений в билде не оказалось. При этом если до запуска докера удалить этот каталог вручную, то всё нормально. В связи с этим вопрос, как правильно чистить этот кэш сборки при запуске контейнера? Не хочется для этого ещё какой-то внешний баш-скрипт прикостыливать.
Смешались в кучу конелюди. Какую команду вызвываете? Какие изменения вносите?
Ильдар
И снова я про всякие кэши, слои и вольюмы. В докере делаю `npm build`оказывается, оно не ребилдит нифига, даже если исходиники поменялись. Поэтому если до сборки в контейнере и вообще до запуска докера, удалить каталог ./build, то внезапно изменения появляются в билде. Первое, что я решил сделать, это прямо в докер файле перед шагом сборки делать удаление каталога ARG backend_url='= "http://127.0.0.1:8000/graphql";' WORKDIR /build ADD ./ /build RUN rm -rf build/build RUN pwd; ls -l /build/; ls -l ./src/utils/const/ RUN /bin/bash -c "sed -ie 's|=.*|$backend_url|g' ./src/utils/const/api.js" RUN npm install RUN npm run build Но это нифига не помогло, видимо удаление произошло только в каком-то слое или ещё какая-то магия случилась, но моих изменений в билде не оказалось. При этом если до запуска докера удалить этот каталог вручную, то всё нормально. В связи с этим вопрос, как правильно чистить этот кэш сборки при запуске контейнера? Не хочется для этого ещё какой-то внешний баш-скрипт прикостыливать.
Кэш может инвалидироваться на первом или третьем шаге этого Dockerfile при соответствующих действиях. Или можно вообще без кэша попросить.
Ильдар
@itjnk https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#leverage-build-cache
Дурак из фильма
Смешались в кучу конелюди. Какую команду вызвываете? Какие изменения вносите?
Мне надо в конфиге подменить урл до бэкенда а потом билдить фронт. Но он не подменяется, буд-то бы где-то закэширован. Поэтому вне докера я удаляю каталог build и сед внутри докера отлично всё подменяет и в результате билда я вижу правильный адрес бэкенда в запросах фронта. Но это всё я делаю вне докеров и докерфайлов. Если же пытаюсь удалять каталог билд в процессе выполнения докерфайла, то после сборки фронт ходит на старый адрес бэка, будто бы мой сед отработал где-то на другом слое, либо билд не пересобирал этот файл.
Дурак из фильма
Допускаю, что кэширует не докер, а сам нпм
Дурак из фильма
Но самое простое решение по удалению каталога с кэшем почему-то не срабатывает в том варианте, который я написал выше.
Dmitry
sudo docker-compose build не работал?
Дурак из фильма
@itjnk https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#leverage-build-cache
Хммммммм, а вот это может быть причиной Aside from the ADD and COPY commands, cache checking does not look at the files in the container to determine a cache match. For example, when processing a RUN apt-get -y update command the files updated in the container are not examined to determine if a cache hit exists. In that case just the command string itself is used to find a match.
Дурак из фильма
sudo docker-compose build не работал?
Зачем мне судо и композ? Мне надо готовый имидж засунуть в регистри
Dmitry
так образ откатывается после выхода из него, насколько я знаю. Если хочешь поулучить новое состояние - нужно ребилдить
Dmitry
докер ищет слои, в которых произошли изменения и начинает ребилдить с этого слоя
Дурак из фильма
так образ откатывается после выхода из него, насколько я знаю. Если хочешь поулучить новое состояние - нужно ребилдить
Спасибо кэп, о том и речь, что я делаю ребилд а изменений никаких не происходит...
Dmitry
а кэш удалял?
Dmitry
prune
Дурак из фильма
Так с этим вопросом я и пришёл. Но мне не хочится чистить весь кэш докера. Я хочу удалить лишь кэш от npm
Dmitry
запусти всё, что тебе нужно, и удали через prune всё, что не нужно (не запущено) :)
Дурак из фильма
Внеси изменения на нужном шаге или перед ним.
И что, при каждом коммите и запуске CI добавлять мусорные команды?
Дурак из фильма
запусти всё, что тебе нужно, и удали через prune всё, что не нужно (не запущено) :)
Вообще херовый вариант, потому что на одной билд машине может не быть всех остальных и это всё просто не запустить вместе.
ilshat
ребята не подскажите чем отличается директива expose от ports ?
Ильдар
И что, при каждом коммите и запуске CI добавлять мусорные команды?
Неа, надо 1) разобраться с тем как работает кэш и как его инвалидировать и 2) четко сформулировать, чего вы хотите добиться.
Petrovich
ребята не подскажите чем отличается директива expose от ports ?
Одна маппит порт хост машины а другая выкидывает во внутреннюю сетку порт
Дурак из фильма
Неа, надо 1) разобраться с тем как работает кэш и как его инвалидировать и 2) четко сформулировать, чего вы хотите добиться.
Да вроде два раза достаточно чётко сормулировал, что изменения в файлах не попадают в образ контейнера.
Дурак из фильма
Ладно, я пока остановился на решении docker build --no-cache=true
Дурак из фильма
Но всёравно благодарю за помощь.
Ильдар
Но всёравно благодарю за помощь.
Пожалуйста. на досуге почитайте https://github.com/moby/moby/issues/1996
!Древній Укр
ребята подскажите куда копать есть data.sql (генерируеться) файл внутри контернера №1 теперь этот файл я хочу импортировать внетрь контейнера №2 (mysql ) —делаю докер компоузом —
!Древній Укр
прочитал что его надо подложить в /docker-entrypoint-initdb.d/
!Древній Укр
чтоб при старте мускул импортировал его
!Древній Укр
но как это забрат с первого контернера не понимаю
Sergey
Либо делать скрипт на докер_хосте через docker cp
Sergey
Но я бы посоветовал маунт, тем более в композе описать можно
!Древній Укр
спс читаю
Григорий Масич
Нихао всем=)
Григорий Масич
Ребят подскажите как контейнер вывести на внешнюю локальную сеть, тоесть чтоб контейнер получил ip от моего dhcp
Nikita
Всем привет. Какой есть кастомный софт для хостинга своего регистри кроме гитлаба и портуса? Из фич больше всего интересует разграничение доступа к имаджам для разных юзеров
Григорий Масич
Спасибо пайду раскуривать=)
Григорий Масич
я магу ошибаться
Anonymous
Latest commit 38fe15a 'update patch Kubernetes,Microservices' @ https://github.com/g0x7f/devOps-patch
Timur
https://docs.docker.com/network/host/
присоединяюсь к вопросу
Timur
сдеал по мануалу - не работает
Timur
sudo docker network create -d macvlan --subnet=192.168.15.0/24 --gateway=192.168.15.1 -o macvlan_mode=bridge -o parent=wlp2s0 my-macvlan-net
Timur
sudo docker network inspect my-macvlan-net [ { "Name": "my-macvlan-net", "Id": "3cdf9c7069c46d53d3ae27eaad541852051d951bd3d875f7bab29526bb298d33", "Created": "2019-01-26T09:25:38.059798031+03:00", "Scope": "local", "Driver": "macvlan", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": {}, "Config": [ { "Subnet": "192.168.15.0/24", "Gateway": "192.168.15.1" } ] }, "Internal": false, "Attachable": false, "Containers": { "004468a9ee6282572eb6f2d0712b6d01769f337c4af0a621d3138fe57a73576b": { "Name": "gracious_jennings", "EndpointID": "a25b6d648ebb5077b98ce2ce697359556127c7f58ff8c87940d15525d26a6a46", "MacAddress": "02:42:c0:a8:0f:2d", "IPv4Address": "192.168.15.45/24", "IPv6Address": "" } }, "Options": { "parent": "wlp2s0" }, "Labels": {} } ]
Timur
sudo docker run --net=my-macvlan-net --ip=192.168.15.45 -itd alpine /bin/sh
Timur
и вот не пингуется сам хост с этого контейнера, ip хоста 15.103, да и шдюз с контейнера не пингуется 15.1
Timur
но контейнеры пингуют друг друга, если 2 создать
Timur
"NetworkSettings": { "Bridge": "", "SandboxID": "030c0dfa622fd8bee90ad3f275d93146e44388c6cdc6e7306d4f16964b620324", "HairpinMode": false, "LinkLocalIPv6Address": "", "LinkLocalIPv6PrefixLen": 0, "Ports": {}, "SandboxKey": "/var/run/docker/netns/030c0dfa622f", "SecondaryIPAddresses": null, "SecondaryIPv6Addresses": null, "EndpointID": "", "Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "IPAddress": "", "IPPrefixLen": 0, "IPv6Gateway": "", "MacAddress": "", "Networks": { "my-macvlan-net": { "IPAMConfig": { "IPv4Address": "192.168.15.45" }, "Links": null, "Aliases": [ "004468a9ee62" ], "NetworkID": "3cdf9c7069c46d53d3ae27eaad541852051d951bd3d875f7bab29526bb298d33", "EndpointID": "a25b6d648ebb5077b98ce2ce697359556127c7f58ff8c87940d15525d26a6a46", "Gateway": "192.168.15.1", "IPAddress": "192.168.15.45", "IPPrefixLen": 24, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "MacAddress": "02:42:c0:a8:0f:2d"
Timur
сетевые праметры контейнра