[megoldva] docker-compose felborult

Fórumok

WSL2-n futtatok dockert, docker-compose-t. Volt egy hiba (valami unicode...), aminek a kapcsán újra akartam telepíteni a docker-compose-t, de nem sikerült jól.

(Igazából elfelejtettem, hogy ezen a gépen a Docker Desktop ural le mindent, és amikor újra eszembe jutott, akkor már késő volt.)

Van itt egy fájl:
/mnt/c/Program Files/Docker/Docker/resources/bin/docker-compose

Ha ezt futtatom, az alábbit írja ki:

The command 'docker-compose' could not be found in this WSL 2 distro.
We recommend to activate the WSL integration in Docker Desktop settings.

See https://docs.docker.com/docker-for-windows/wsl/ for details.

Itt is van egy fájl:
/mnt/wsl/docker-desktop/cli-tools/usr/bin/docker-compose

Ha ezt így, ezzel a hosszú elérési úttal megadva futtatom, akkor minden jó.

Volt egy fájl: .local/bin/docker-compose, ez mintha python lett volna, mint a többi ott lévő szkriptecske, ezt töröltem.

S ami a legmeglepőbb:
ha állítok egy linket (sudo-ként persze) a /usr/bin/-ből a működő /mnt/wsl/docker-desktop/cli-tools/usr/bin/docker-compose fájlra, akkor Segmentation fault-tal hal el a processz.

Hogy tudnám újra elérni, hogy a docker-compose újra a régi legyen? Esetleg milyen plusz állítást kell adnom annak a symlinknek, hogy működjön?

(A Docker Desktop "Enable integration..." irányát ne mondjátok, azt már próbáltam sokat. A sejtésem az, hogy a Windows-os rendszergazda kontra linuxos root jogosultságbeli különbség okozhat valami fennforgást.)

Szerk:

$ /usr/bin/docker-compose -v
docker-compose version 1.26.0-rc4, build d279b7a8

$ which docker-compose
/usr/bin/docker-compose

$ docker-compose -v
Segmentation fault

Szerk2: az strace segített, köszönet érte,@NevemTeve! Ebből derült ki, hogy tévesen kerül meghívásra egy ponton a /usr/local/bin/docker-compose.

Hozzászólások

a docker-compose az csak egy bináris, töröld le nyugodtan és szedd le újra a docker oldaláról. A Windows Docker-ben be lehet pipálni hogy WSL integáriciót használja (ha nem pipálod be akkor nem megy és a Hyper-V módban van), szóval így ránézésre nálad tényleg csak ennyit kéne hogy bepipálod. Mit próbálkoztál sokat ezen a részén?:)

Ki-be pipálgattam. Gyakorlatilag mindig be volt ez pipálva nálam, korábban is, most is.

(Resources, WSL integration, Enable integration with my default WSL distro, illetve General, Use the WSL2 based engine.)

Röviden annyi a kérdés, hogy hogy lehet elérni, hogy a docker-compose hatására a /mnt/wsl/docker-desktop/cli-tools/usr/bin/docker-compose induljon el, merthogy az jó úgy, ahogy van.

Látom már, hogy az a gond, hogy a "which docker-compose" nem ugyanazt mondja, mint amit a docker-compose hatására elindít.
Ugyanis a which docker-compose a /mnt/wsl/docker-desktop/cli-tools/usr/bin/docker-compose -ra mutató /usr/bin/docker-compose -t mondja, és explicite rámutatva szépen el is indul, ám ha csak úgy natúr beírom, hogy docker-compose, akkor jön a segmentation fault.

Köszi. (Azt hittem, szándékosan hard linket javasolsz.)

A fent emlegetett "Enable integration with my default WSL distro" Docker-Desktop jelölőnégyzet ki/be pipálása is létrehozza ezt a linket. De ezzel együtt igaz az, hogy a /usr/bin/docker-compose jól fut, a "which docker-compose" ezt (/usr/bin/docker-compose) adja, a sima docker-compose pedig segfaultol.

Képernyőről másolva:

$ /usr/bin/docker-compose -v
docker-compose version 1.26.0-rc4, build d279b7a8

$ which docker-compose
/usr/bin/docker-compose

$ docker-compose -v
Segmentation fault

hash -r docker-compose -ra gondolsz, vagy csak egy natúr hash -r -re?
 

Lefuttattam mindkettőt, annyi változott, hogy immár:
$ type docker-compose
docker-compose is /usr/bin/docker-compose

Azonban továbbra is ez van:

$ docker-compose -v
Segmentation fault

$ /usr/bin/docker-compose -v
docker-compose version 1.26.0-rc4, build d279b7a8

Ezt adta (miután rájöttem, hogy a kimenetet 2>... -vel tudom elmenteni. :-)  )
https://porgeto.hu/strace_docker-composer.txt

Köszönöm az ötletet!

Az error-ra rákeresve két helyen került elő találat.

Egyikük a /usr/local/bin/docker-compose-ra utalt. Ezt elmozgatva onnan már nem jön a hiba. Köszi nagyon az strace ötletet!!!!!!

Szerkesztve: 2020. 06. 02., k – 18:21

Meg tudnátok írni, hogy nálatok mi van a  ~/.local/bin/docker-composer-ben (ha létezik e fájl)?

Nem tudom, van-e köze a megoldáshoz annak, hogy amikor elindítom a /usr/bin/docker-compose-t, futás előtt kiírja:

WARNING: The Docker Engine you're using is running in swarm mode.

Compose does not use swarm mode to deploy services to multiple nodes in a swarm. All containers will be scheduled on the current node.

To deploy your application across the swarm, use `docker stack deploy`.