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 не работал?
Дурак из фильма
Dmitry
так образ откатывается после выхода из него, насколько я знаю. Если хочешь поулучить новое состояние - нужно ребилдить
Dmitry
докер ищет слои, в которых произошли изменения и начинает ребилдить с этого слоя
Дурак из фильма
Dmitry
а кэш удалял?
Dmitry
prune
Дурак из фильма
Так с этим вопросом я и пришёл. Но мне не хочится чистить весь кэш докера. Я хочу удалить лишь кэш от npm
Dmitry
запусти всё, что тебе нужно, и удали через prune всё, что не нужно (не запущено) :)
Ильдар
ilshat
ребята не подскажите чем отличается директива expose от ports ?
Дурак из фильма
Ильдар
Дурак из фильма
Ладно, я пока остановился на решении docker build --no-cache=true
Дурак из фильма
Но всёравно благодарю за помощь.
Дурак из фильма
!Древній Укр
ребята подскажите куда копать есть data.sql (генерируеться) файл внутри контернера №1 теперь этот файл я хочу импортировать внетрь контейнера №2 (mysql )
—делаю докер компоузом —
!Древній Укр
прочитал что его надо подложить в /docker-entrypoint-initdb.d/
!Древній Укр
чтоб при старте мускул импортировал его
!Древній Укр
но как это забрат с первого контернера не понимаю
Sergey
Sergey
Либо делать скрипт на докер_хосте через docker cp
Sergey
Но я бы посоветовал маунт, тем более в композе описать можно
!Древній Укр
спс читаю
Григорий Масич
Нихао всем=)
Григорий Масич
Ребят подскажите как контейнер вывести на внешнюю локальную сеть, тоесть чтоб контейнер получил ip от моего dhcp
Anonymous
Nikita
Всем привет. Какой есть кастомный софт для хостинга своего регистри кроме гитлаба и портуса? Из фич больше всего интересует разграничение доступа к имаджам для разных юзеров
Григорий Масич
Спасибо пайду раскуривать=)
Григорий Масич
Григорий Масич
я магу ошибаться
Anonymous
Latest commit 38fe15a 'update patch Kubernetes,Microservices' @ https://github.com/g0x7f/devOps-patch
Timur
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
сетевые праметры контейнра