/Docketeer

A Docker & Kubernetes developer tool to manage containers & visualize both cluster and container metrics

Primary LanguageTypeScriptMIT LicenseMIT

Contributors Forks Stargazers Issues MIT License LinkedIn


Logo
https://docketeer.io/

Docketeer is a developer-friendly application that provides a single interface for container and network management as well as metric visualization.
Explore the code & contribute here!»
See the extension version's code here!»


View Demo · Report Bug · Request Feature



Table of Contents


  1. About Docketeer
  2. Installation
  3. In Development
  4. Contributing
  5. License
  6. Authors
  7. Troubleshooting

About The Project

DockerTypescriptJavaScriptReactReduxRTKNodeExpressPostgresMySQLGrafanaPrometheusHelmKubernetesJestViteGitHTML5CSS3SASSD3


Logo

Docketeer is an open source initiative comprising contributions from dozens of talented and passionate software engineers. Our application provides a simple interface to manage Docker resources & visualize both host and container metric data, along with Kubernetes cluster data. Docketeer is a containerized application that can be deployed alongside your application cluster with hardly any effort. To learn more about our application and how to get started, keep reading!

(back to top)

Features:

  • Docketeer is a Docker developer tool that's available as an open-source project on GitHub or as an extension on Docker Desktop.
  • It aims to simplify the development process for projects that use Docker containers.
  • Allows you to filter through both your running and stopped container logs.
  • Docketeer provides an easy-to-use GUI for managing Docker containers, images, and networks.
  • With Docketeer, developers can quickly create, start, stop, and delete containers, as well as manage Docker networks and images.
  • Docketeer includes a variety of features, including automatic container naming, customizable configurations, and support for multiple Docker Compose - files.
  • Docketeer offers full networking capabilities: create and manage networks without touching the terminal.
  • Docketeer offers Node and kubelet metric visualizations for your Kubernetes clusters, along with an easy set up process to get your cluster connected to the application.
  • Docketeer also offers built-in support for popular development frameworks like Rails and Node.js, making it easy to get started with these technologies.
  • Docketeer is highly customizable, and developers can configure it to suit their specific needs.
  • It's a community-maintained project, with frequent updates and bug fixes.
  • Docketeer is licensed under the MIT license, meaning it can be used and modified freely, even for commercial projects.

(back to top)

Installation

The local configuration for Docketeer was setup to be as simple as possible for the end-user.
Follow the steps below to get started with Docketeer.

Prerequisites:

You must have Docker Desktop installed and running!

STEP 1 — Clone the repository

git clone https://github.com/open-source-labs/Docketeer.git

STEP 2 — Docker compose up

Making sure you're in your Docketeer directory, run:

docker compose up

STEP 3 — Navigate to localhost:4000 to sign-up & login!

http://localhost:4000

(back to top)

Setting up Docketeer to work with a Kubernetes cluster

Prerequisites: you must be running a Kubernetes cluster/kube, have kubectl and helm installed.

Open up a new tab in your terminal. Run

npm install

Docketeer is using d3-sankey for data visualization, which is currently not being actively maintained. Running npm install would install patch-package and make sure to input y when you see the following prompt:

Need to install the following packages:
  patch-package@7.0.2
Ok to proceed? (y) 

and

npm run dev

Then, navigate to localhost:4001/api/k8:

If you haven't set up Prometheus-Operator with us before, click the first button to install.
Otherwise, you can skip the first button and go on with the next two!
P.S. Make sure to keep this terminal open!

In Development

  • Support for more development frameworks and languages, such as Next.JS.
  • Expand Docker networking capabilities within Docketeer to provide more sophisticated networking configurations and better interoperability with other network tools.
  • Develop more advanced container configuration options within Docketeer, such as load balancing or high availability setups.
  • Integrate Docketeer with popular development tools like IDEs or continuous integration/delivery systems for better automation and workflow efficiency.
  • Add support for more advanced Docker features, like multi-stage builds or Docker secrets, to expand the capabilities of Docketeer.
  • Develop integration with cloud services like AWS or Azure to simplify the deployment of Docker-based applications.
  • Implement the Kubernetes metric monitoring from the browser version to the extension version.
  • Display additional metrics for Kubernetes clusters.

See Troubleshooting and open issues for a list of known issues.

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repository and create a pull request. You can also simply open an issue describing your contribution. Don't forget to give the project a star! Thanks again!

  1. Fork the project and clone onto your local machine
  2. Create your Feature Branch (git checkout -b feature/NewFeatureName)
  3. Commit your Changes (git commit -m '(feature/bugfix/style/etc.): [commit message here]')
  4. Push to the Branch (git push origin feature/NewFeatureName)
  5. Open a Pull Request
  6. Create an issue on GitHub (as mentioned above!)

Read our contributing guide for more information on how to purpose bugfixes and improvements to Docketeer.


Read More


License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Authors

(back to top)

Show Your Support

Please ⭐️ this project if you found it helpful, thank you!


Troubleshooting:


WSL

There are some known issues running Docketeer through WSL. Using WindowsOS, MacOS, or Linux is recommended.


Linux

If you are runing Docketeer in Linux and encounter the followeing errors, you might need to change some of your permissions.

grafana        |Error: ✗ failed to connect to database: failed to create SQLite database file "/var/lib/grafana/grafana.db": open /var/lib/grafana/grafana.db: permission denied
prometheus     | ts=2023-07-05T23:48:01.612Z caller=query_logger.go:113 level=error component=activeQueryTracker msg="Failed to create directory for logging active queries"

prometheus     | ts=2023-07-05T23:48:01.613Z caller=query_logger.go:91 level=error component=activeQueryTracker msg="Error opening query log file" file=/prometheus/data/queries.active err="open data/queries.active: no such file or directory"

prometheus     | panic: Unable to create mmap-ed active query log

In order to do this, you need to change the permissions of data in ./imageConfigs/grafana and promDate under ./imageConfigs/prometheus.

go to grafana under ./imageConfigs and change permission of data

cd ./imageConfigs/grafana
chmod 771 data/

go to prometheus under ./imageConfigs and change permission of promDate

cd ./imageConfigs/prometheus
chmod 777 promData/

Ad-blocker

If you are encountering the following error and are running an ad-blocker, disable your ad-blocker

ERR_BLOCKED_BY_CLIENT

Network Capacity

By default, Docker can only create 31 networks. If you try to create more, you would encounter the following error:

Error response from daemon: could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network

To expand network capacity, add the following to /etc/docker/daemon.json

{
  "default-address-pools" : [
    {
      "base" : "172.17.0.0/12",
      "size" : 20
    },
    {
      "base" : "192.168.0.0/16",
      "size" : 24
    }
  ]
}

For details, please read The definitive guide to docker's default-address-pools option