A simple terminal UI for docker and docker-compose, written in Go with the [gocui](https://github.com/jroimartin/gocui 'gocui') library. [![CircleCI](https://circleci.com/gh/jesseduffield/lazydocker.svg?style=svg)](https://circleci.com/gh/jesseduffield/lazydocker) [![Go Report Card](https://goreportcard.com/badge/github.com/jesseduffield/lazydocker)](https://goreportcard.com/report/github.com/jesseduffield/lazydocker) [![GolangCI](https://golangci.com/badges/github.com/jesseduffield/lazydocker.svg)](https://golangci.com) [![GoDoc](https://godoc.org/github.com/jesseduffield/lazydocker?status.svg)](http://godoc.org/github.com/jesseduffield/lazydocker) [![GitHub tag](https://img.shields.io/github/tag/jesseduffield/lazydocker.svg)]() ![Gif](/docs/resources/demo3.gif) [Demo](https://youtu.be/NICqQPxwJWw) Minor rant incoming: Something's not working? Maybe a service is down. `docker-compose ps`. Yep, it's that microservice that's still buggy. No issue, I'll just restart it: `docker-compose restart`. Okay now let's try again. Oh wait the issue is still there. Hmm. `docker-compose ps`. Right so the service must have just stopped immediately after starting. I probably would have known that if I was reading the log stream, but there is a lot of clutter in there from other services. I could get the logs for just that one service with `docker compose logs --follow myservice` but that dies everytime the service dies so I'd need to run that command every time I restart the service. I could alternatively run `docker-compose up myservice` and in that terminal window if the service is down I could just `up` it again, but now I've got one service hogging a terminal window even after I no longer care about its logs. I guess when I want to reclaim the terminal realestate I can do `ctrl+P,Q`, but... wait, that's not working for some reason. Should I use ctrl+C instead? I can't remember if that closes the foreground process or kills the actual service. What a headache! Memorising docker commands is hard. Memorising aliases is slightly less hard. Keeping track of your containers across multiple terminal windows is near impossible. What if you had all the information you needed in one terminal window with every common command living one keypress away (and the ability to add custom commands as well). Lazydocker's goal is to make that dream a reality. - [Installation](https://github.com/jesseduffield/lazydocker#installation) - [Usage](https://github.com/jesseduffield/lazydocker#usage), [Keybindings](/docs/keybindings) - [Cool Features](https://github.com/jesseduffield/lazydocker#cool-features) - [Contributing](https://github.com/jesseduffield/lazydocker#contributing) - [Video Tutorial](https://youtu.be/NICqQPxwJWw) - [Config Docs](/docs/Config.md) - [Twitch Stream](https://www.twitch.tv/jesseduffield) ## Installation ### Homebrew ```sh brew tap jesseduffield/lazydocker brew install lazydocker ``` ### Binary Release (Linux/OSX) You can download a binary release [here](https://github.com/jesseduffield/lazydocker/releases). ### Go required go version: 1.12 ```sh go get github.com/jesseduffield/lazydocker ``` ### Docker [![Docker Pulls](https://img.shields.io/docker/pulls/jesseduffield/lazydocker.svg)](https://hub.docker.com/r/jesseduffield/lazydocker) [![Docker Stars](https://img.shields.io/docker/stars/jesseduffield/lazydocker.svg)](https://hub.docker.com/r/jesseduffield/lazydocker) [![Docker Automated](https://img.shields.io/docker/cloud/automated/jesseduffield/lazydocker.svg)](https://hub.docker.com/r/jesseduffield/lazydocker) 1.
- If you have a x86_64 CPU architecture ```sh docker build -t lazydocker https://github.com/jesseduffield/lazydocker.git # or locally within the repository: docker build -t lazydocker . ``` - If you have a ARM 32 bit v6 architecture ```sh docker build -t lazydocker \ --build-arg BASE_IMAGE_BUILDER=arm32v6/golang \ --build-arg BASE_IMAGE=arm32v6/alpine \ --build-arg GOARCH=arm \ --build-arg GOARM=6 \ https://github.com/jesseduffield/lazydocker.git ``` - If you have a ARM 32 bit v7 architecture ```sh docker build -t lazydocker \ --build-arg BASE_IMAGE_BUILDER=arm32v7/golang \ --build-arg BASE_IMAGE=arm32v7/alpine \ --build-arg GOARCH=arm \ --build-arg GOARM=7 \ https://github.com/jesseduffield/lazydocker.git ``` - If you have a ARM 64 bit v8 architecture ```sh docker build -t lazydocker \ --build-arg BASE_IMAGE_BUILDER=arm64v8/golang \ --build-arg BASE_IMAGE=arm64v8/alpine \ --build-arg GOARCH=arm64 \ https://github.com/jesseduffield/lazydocker.git ``` You can also add `--build-arg VCS_REF=$(git rev-parse HEAD)` so that the go build and the container contain the commit used.