lstags alternatives and similar packages
Based on the "DevOps Tools" category.
Alternatively, view lstags alternatives based on common mentions on social networks and blogs.
Gogs10.0 9.4 lstags VS GogsGogs is a painless self-hosted Git service
Moby10.0 9.9 lstags VS MobyMoby Project - a collaborative project for the container ecosystem to assemble container-based systems
kubernetes10.0 10.0 lstags VS kubernetesProduction-Grade Container Scheduling and Management
Vegeta9.9 0.0 lstags VS VegetaHTTP load testing tool and library. It's over 9000!
Gitea9.9 9.9 lstags VS GiteaGit with a cup of tea, painless self-hosted git service
Hey9.8 0.0 lstags VS HeyHTTP load generator, ApacheBench (ab) replacement
Packer9.8 9.6 lstags VS PackerPacker is a tool for creating identical machine images for multiple platforms from a single source configuration.
Flynn9.6 2.9 lstags VS Flynn[UNMAINTAINED] A next generation open source platform as a service (PaaS)
GVM9.5 0.0 lstags VS GVMGo Version Manager
webhook9.5 0.0 lstags VS webhookwebhook is a lightweight incoming webhook server to run shell commands
Ddosify9.3 7.7 lstags VS DdosifyHigh-performance load testing tool, written in Golang. For distributed and Geo-targeted load testing: Ddosify Cloud - https://ddosify.com 🚀
ko9.2 4.2 lstags VS koBuild and deploy Go applications
Boom9.2 0.0 lstags VS BoomHTTP(S) load generator, ApacheBench (ab) replacement, written in Go
gaia9.1 0.0 lstags VS gaiaBuild powerful pipelines in any programming language.
gox9.0 5.1 lstags VS goxA dead simple, no frills Go cross compile tool
Mizu9.0 9.7 lstags VS MizuThe API traffic viewer for Kubernetes providing deep visibility into all API traffic and payloads going in, out and across containers and pods inside a Kubernetes cluster. Think TCPDump and Wireshark re-invented for Kubernetes [Moved to: https://github.com/kubeshark/kubeshark]
Go Metrics8.9 0.0 lstags VS Go MetricsGo port of Coda Hale's Metrics library
script8.9 4.7 lstags VS scriptMaking it easy to write shell-like scripts in Go
bosun8.9 0.0 lstags VS bosunTime Series Alerting Framework
bombardier8.9 0.0 lstags VS bombardierFast cross-platform HTTP benchmarking tool written in Go
Wide8.9 8.4 lstags VS WideA Web-based IDE for Teams using Golang.
Pomerium8.8 9.0 lstags VS PomeriumPomerium is a context-aware access gateway.
dasel8.8 7.1 lstags VS daselSelect, put and delete data from JSON, TOML, YAML, XML and CSV files with a single tool. Supports conversion between formats and can be used as a Go package.
aptly8.6 8.1 lstags VS aptlyaptly - Debian repository management tool
kala8.3 0.0 lstags VS kalaModern Job Scheduler
rtop8.3 2.1 lstags VS rtoprtop is an interactive, remote system monitoring tool based on SSH
StatusOK8.1 0.0 lstags VS StatusOKMonitor your Website and APIs from your Computer. Get Notified through Slack, E-mail when your server is down or response time is more than expected.
goxc8.1 0.0 lstags VS goxca build tool for Go, with a focus on cross-compiling, packaging and deployment
s5cmd8.0 7.4 lstags VS s5cmdParallel S3 and local filesystem execution tool.
fac8.0 0.0 lstags VS facEasy-to-use CUI for fixing git conflicts
go-selfupdate7.7 0.0 lstags VS go-selfupdateEnable your Go applications to self update
s3gof3r7.7 0.0 lstags VS s3gof3rFast, concurrent, streaming access to Amazon S3, including gof3r, a CLI. http://godoc.org/github.com/rlmcpherson/s3gof3r
Fleet device managementOpen-source device management for IT and security teams with thousands of laptops and servers. (macOS, Windows, Linux, ChromeOS, AWS, Google Cloud, Azure, data center, containers)
Banshee7.7 0.0 lstags VS BansheeAnomalies detection system for periodic metrics.
hk7.5 0.0 lstags VS hkHeroku command-line interface in Go.
Scaleway-cli7.4 3.5 lstags VS Scaleway-cliCommand Line Interface for Scaleway
uTask7.3 7.8 lstags VS uTaskµTask is an automation engine that models and executes business processes declared in yaml. ✏️📋
skm7.2 4.0 lstags VS skmA simple and powerful SSH keys manager
kwatch7.0 4.0 lstags VS kwatch:eyes: monitor & detect crashes in your Kubernetes(K8s) cluster instantly
kool6.8 0.0 lstags VS koolFrom local development to the cloud: development workflow made easy.
cassowary6.8 5.9 lstags VS cassowary:rocket: Modern cross-platform HTTP load-testing tool written in Go
Rump6.7 0.0 lstags VS RumpHot sync two Redis servers using dumps.
govvv6.6 0.0 lstags VS govvv"go build" wrapper to add version info to Golang applications
Mora6.3 0.0 lstags VS MoraMongoDB generic REST server in Go
jcli6.3 6.6 lstags VS jcliJenkins CLI allows you to manage your Jenkins in an easy way. Jenkins 命令行客户端
Pewpew6.2 2.5 lstags VS PewpewFlexible HTTP command line stress tester for websites and web services
gonative6.1 0.0 lstags VS gonativeBuild Go Toolchains /w native libs for cross-compilation
easyssh-proxy6.0 0.0 lstags VS easyssh-proxyeasyssh-proxy provides a simple implementation of some SSH protocol features in Go
metric6.0 0.0 lstags VS metricMinimal metrics for Go (counter/gauge/histogram). No dependencies. Compatible with expvar. Web UI included.
dogo5.9 0.0 lstags VS dogoMonitoring changes in the source file and automatically compile and run (restart).
Static code analysis for 29 languages.
Do you think we are missing an alternative of lstags or a related project?
Utility and API to manipulate (analyze, synchronize and aggregate) images across different Docker registries.
$ lstags alpine~/^3\\./ <STATE> <DIGEST> <(local) ID> <Created At> <TAG> ABSENT sha256:9363d03ef12c8c25a2def8551e609f146 n/a 2017-09-13T16:32:00 alpine:3.1 CHANGED sha256:9866438860a1b28cd9f0c944e42d3f6cd 39be345c901f 2017-09-13T16:32:05 alpine:3.2 ABSENT sha256:ae4d16d132e3c93dd09aec45e4c13e9d7 n/a 2017-09-13T16:32:10 alpine:3.3 CHANGED sha256:0d82f2f4b464452aac758c77debfff138 f64255f97787 2017-09-13T16:32:15 alpine:3.4 PRESENT sha256:129a7f8c0fae8c3251a8df9370577d9d6 074d602a59d7 2017-09-13T16:32:20 alpine:3.5 PRESENT sha256:f006ecbb824d87947d0b51ab8488634bf 76da55c8019d 2017-09-13T16:32:26 alpine:3.6
NB! You can specify many images to operate on, e.g:
lstags nginx~/^1\\.13/ mesosphere/chronos alpine~/^3\\./
Why would someone use this?
You could use
lstags, if you ...
- ... aggregate images from different external registries into your own registry for speed and locality reasons.
- ... compare images present locally with the registry ones (e.g.: know if image tagged "latest" was re-pushed).
- ... continuously pull Docker images from some public or private registry to speed-up Docker run on your system.
... pull Ubuntu 14.04 & 16.04, all the Alpine images and Debian "stretch" to have the latest software to play with:
lstags --pull ubuntu~/^1\\.04$/ alpine debian~/stretch/
... pull and re-push CoreOS-related images from
quay.io to your own registry (in case these hipsters will break everything):
lstags -P /quay -r registry.company.io quay.io/coreos/hyperkube quay.io/coreos/flannel
NB! In case you use private registry with authentication, make sure your Docker client knows how to authenticate against it!
lstags will reuse credentials saved by Docker client in its
config.json file, one usually found at
Possible image states
lstags distinguishes five states of Docker image:
ABSENT- present in registry, but absent locally
PRESENT- present in registry, present locally, with local and remote digests being equal
CHANGED- present in registry, present locally, but with different local and remote digests
LOCAL_ONLY- present locally, absent in registry
NOT_FOUND- absent in registry, absent locally, probably does not exist at all
You can either:
- rely on
lstagsdiscovering credentials "automagically" :tophat:
- load credentials from any Docker JSON config file specified
Sometimes registry may contain tags not exposed to any kind of search though still existing.
lstags is unable to discover these tags, but if you need to pull or push them, you may "assume"
they exist and make
lstags blindly try to pull these tags from the registry. To inject assumed
tags into the registry query you need to extend repository specification with a
= followed by a
comma-separated list of tags you want to assume.
e.g. we assume tags
v1.7.0 exist like this:
Full repository specification looks like this:
You may provide infinite number of repository specifications to
When you [re]push images to your "push" registry, you can control the destination repository path prefix:
- by default, repository path prefix will be auto-generated from the source registry hostname, e.g.:
--push-prefix=/will push images "as is", with no additional repository path prefix
--push-prefix=/my/prefix/will push images appending
/my/prefix/to the repository path
/my/prefixwithout trailing slash is OK, as long as path would still be formatted correctly by API :sparkles:
--push-prefix=""would trigger "default" behavior with prefix being auto-generated
To fail or not to fail?
By default application exits after encountering any errors. To make it more tolerant to subsequent failures, you may use CLI option
-N, --do-not-fail or set environment variable
DO_NOT_FAIL=true before running application. HINT: Option
-d, --daemon-mode always implies activation of
:bulb: You can load repositories from the YAML file just like you do it from the command line arguments:
lstags -f file.yaml
A valid YAML file looks like this (mandatory
lstags root key is here to be able to use "shared" YAMLs):
lstags: repositories: - busybox - nginx:stable - mesosphere/marathon-lb~/^v1/ - quay.io/coreos/awscli=master,latest,edge - gcr.io/google-containers/hyperkube~/^v1\.(9|10)\./
lstags can load repositories from YAML or from CLI args, but not from both at the same time!
git clone [email protected]:ivanilves/lstags.git cd lstags sudo make wrapper lstags -h
A special wrapper script will be installed to manage
lstags invocation and updates. :sunglasses:
Install: From source
git clone [email protected]:ivanilves/lstags.git cd lstags dep ensure go build ./lstags -h
NB! I assume you have current versions of Go & dep installed and also have set up GOPATH correctly.
Using it with Docker
docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock ivanilves/lstags Usage: lstags [OPTIONS] REPO1 REPO2 REPOn... Application Options: -j, --docker-json= JSON file with credentials (default: ~/.docker/config.json) [$DOCKER_JSON] -p, --pull Pull Docker images matched by filter (will use local Docker deamon) [$PULL] -P, --push Push Docker images matched by filter to some registry (See 'push-registry') [$PUSH] -r, --push-registry= [Re]Push pulled images to a specified remote registry [$PUSH_REGISTRY] --- OUTPUT WAS CUT HERE TO SAVE SPACE ---
Analyze an image
docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock ivanilves/lstags alpine~/^3\\./ ANALYZE alpine FETCHED alpine - <STATE> <DIGEST> <(local) ID> <Created At> <TAG> CHANGED sha256:b40e202395eaec699f2d0c5e01e6d6cb8 76da55c8019d 2017-10-25T23:19:51Z alpine:3.6 ABSENT sha256:d95da16498d5d6fb4b907cbe013f95032 n/a 2017-10-25T23:20:18Z alpine:3.1 ABSENT sha256:cb275b62f789b211114f28b391fca3cc2 n/a 2017-10-25T23:20:32Z alpine:3.2 ABSENT sha256:27af7da847283a947c008592f2b2cd6d2 n/a 2017-10-25T23:20:45Z alpine:3.3 CHANGED sha256:246bbbaa81b28837b64cb9dfc574de958 1a19a71e5d38 2017-10-25T23:20:59Z alpine:3.4 CHANGED sha256:aa96c8dc3815c44d4aceaf1ee7903ce58 37c7be7a096b 2017-10-25T23:21:13Z alpine:3.5 -
You are very welcome to open pull requests to this repository! :wink:
:warning: CI build will fail, if your commit messages are not semantic!
To maximize our collaboration efficiency we would humbly ask you to follow these recommendations:
- Please add reasonable description (what?/why?/etc) to your pull request :exclamation:
- Your code should pass CI (CircleCI) and a [pretty liberal] code review :mag:
- If code adds or changes some logic, it should be covered by a unit test :neckbeard:
- Please, put meaningful and semantic messages on your commits :pray:
NB! Not a requirement, but a GIF included in PR description would make our world a happier place!
'NORELEASE' branches and commits
We have automatic release system. Every PR merge will create a new application release with a changelog generated from PR branch commits. For the most cases it is OK. However, if you work with things that do not need to be released (e.g. non user-facing changes), you have following options:
- If you don't want to create release from your PR, make it from branch containing "NORELEASE" keyword in its name.
- If you want to prevent single commit from appearing in a changelog, please start commit message with "NORELEASE".
:warning: We don't build RPMs/DEBs/etc, as we see no need for it. We ship
lstags as a single binary or as a Docker container.
You may use lstags either as a standalone CLI or as a Golang package inside your own application.
Set up and build PoC application with our
make poc-app APP_PATH=../lstags-api cd ../lstags-api go build # run "./lstags-api" binary to see PoC in action (examine main.go first to ensure no "rm -rf /" is there)
- This installs all necessary dependencies and sets up PoC application at the path
- We assume you already have recent Golang version installed on your system https://golang.org/dl/
NB! Far more complete API usage example could be found in main.go :wink: