Docker CE ovládaný přes Git Bash konzoli (Windows 10)

07.05.2018

Docker CE pro Windows je standardně ovládán pomocí PowerShell konzole. Pokud se používají Linux kontejnery, přímo se nabízí ovládat docker pomocí bash konzole.

Aktuálně již Docker na Windows není úplně strikně vázaný na použití PowerShell konzole, jako tomu bývalo dříve. Celkem bez problémů lze k ovládání používat Command Prompt (CMD) a do jisté míry právě také Git Bash konzoli. Do jisté míry znamená, že ta podpora končí při snaze připojit lokální adresář. Problém je v tom, že se konzole snaží překládat unixové cesty na windows (problém který se řešil pro Docker Toolbox v roce 2016).

Různě se to řeší také pro Docker CE for Windows a jako funkční řešení vypadá vytvoření dvou souborů docker a docker-compose v adresáři C:\Program Files\Docker\Docker\resources\bin. V těchto souborech se potom nastaví proměnná, která tomuto překladu zabrání. 

Ideální je stánout zip soubor a ten rozbalit.

Při ukládání souborů samostatně pozor na to, že Windows tam doplňuje příponu .txt, která tam být nesmí. Musí to být soubory bez přípony. Moc tomu nepomáhá fakt, že Windows ve výchozím stavu přípony skrývá.

Při povolení příipon souborů to tedy musí vypadat následovně.

Dva bash soubory, které proměnění tento nefunkční stav:

V takovýhle funkční:

Jenže...

Není to úplně ideální, protože některé akce stále nefungují zcela přirozeně. 
Pro vývoj poměrně užitečná akce, tedy interaktivní (argument -i) připojení terminálu (argument -t, zkráceně -it) skončí neúspěšně s následující informací.

Fajn, je tu návěda, tak zkusíme použít winpty - což v podstatě znamená, že se použije cmd.

A použitím winpty přestanou fungovat posix cesty a je nutno použít windows cesty.

Vítězství je mé 😎
Ale je jasně vidět, že to je trochu zbytečně komplikované.

Mimochodem, to červeně zobrazené ProgramData je symlink na adresář, který není připojen. Což je dobré vědět - mám-li symlink, musím připojit i cílový adresář.

Takže ovládat Docker CE for Windows přes Git Bash konzoli lze, ale má to své mušky masařky.