6

Próbuję użyć usługi kontenerowej AWS EC2 (ECS) w celu uruchomienia sieci szkieletu do sewerera (Selenium). Zgodnie z docker-selenium strona github, musimy albo dodać jakieś shared memory lub mount a volume do kontenera docker, jeśli chcemy uruchomić długotrwałe testy przy użyciu przeglądarki chrome na obrazie selenium-node-chrome.Obsługa Amazon ECS dla --shm-size w docker

Na moim instancji EC2, kiedy robię

df -h 

widzę, że /dev/shm istnieje i ma 3.7Gb of available free space. Ale jeśli podłączę wolumin do mojego kontenera z węzłem chrome przy użyciu właściwości -v /dev/shm:/dev/shm, przeglądarka nie pojawi się nawet po uruchomieniu testu. Ale jeśli zamontuję katalog macierzysty /dev, testy będą działać przez kilka sekund, a następnie otrzymam komunikat "Nie można uzyskać dostępu do przeglądarki", ponieważ przeglądarka jest następnie zamykana (mogłem to potwierdzić za pomocą przeglądarki VNC Viewer). Daje mi to do zrozumienia, że ​​montaż woluminu za pośrednictwem interfejsu ECS/api nie pomoże.

Gdybym bezpośrednio rozpocząć docker bez przechodzenia przez drogi ECS przekazując właściwość --shm-size jak

docker run --shm-size=2500m .... 

testów wydaje się działać bez żadnych problemów.

Ale, ECS clearly does not support the --shm-size własność od teraz. Jak naprawić lub obejść ten problem i nadal korzystać z usługi ECS, aby przekazać właściwość --shm-size? Czy unikanie użycia ECS jest tu jedyną metodą, czy jest jakiś inny lepszy sposób?

Odpowiedz

0

Obejście:

Dodaj poniżej poleceń (EntryPoint) jako ostatni wiersz w swoim dockerfile

ENTRYPOINT shm_dir=/dev/shm;umount $shm_dir;mount -t tmpfs -o rw,nosuid,nodev,noexec,relatime,size=*<size eg. 500m,1Gb>* shm $shm_dir && /bin/bash 

Ja testowałem tę zmianę w lokalnej dokowanym i to działa zgodnie z oczekiwaniami (jeszcze przetestować na aws).

Dzięki Anor za obejście tego problemu. Źródło: anor's blog

Powiązane problemy