mirror of
				https://github.com/prometheus/prometheus.git
				synced 2025-10-26 14:01:30 +01:00 
			
		
		
		
	The documentation referenced "data volume containers", which were superseded by named volume support in Docker several years ago. There were to bind-mounting examples in the docs that are effectively doing the same thing, but the description of the second was somewhat erroneous. Signed-off-by: Lars Kellogg-Stedman <lars@redhat.com>
		
			
				
	
	
		
			103 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| title: Installation
 | |
| sort_rank: 2
 | |
| ---
 | |
| 
 | |
| # Installation
 | |
| 
 | |
| ## Using pre-compiled binaries
 | |
| 
 | |
| We provide precompiled binaries for most official Prometheus components. Check
 | |
| out the [download section](https://prometheus.io/download) for a list of all
 | |
| available versions.
 | |
| 
 | |
| ## From source
 | |
| 
 | |
| For building Prometheus components from source, see the `Makefile` targets in
 | |
| the respective repository.
 | |
| 
 | |
| ## Using Docker
 | |
| 
 | |
| All Prometheus services are available as Docker images on
 | |
| [Quay.io](https://quay.io/repository/prometheus/prometheus) or
 | |
| [Docker Hub](https://hub.docker.com/r/prom/prometheus/).
 | |
| 
 | |
| Running Prometheus on Docker is as simple as `docker run -p 9090:9090
 | |
| prom/prometheus`. This starts Prometheus with a sample
 | |
| configuration and exposes it on port 9090.
 | |
| 
 | |
| The Prometheus image uses a volume to store the actual metrics. For
 | |
| production deployments it is highly recommended to use a
 | |
| [named volume](https://docs.docker.com/storage/volumes/)
 | |
| to ease managing the data on Prometheus upgrades.
 | |
| 
 | |
| To provide your own configuration, there are several options. Here are
 | |
| two examples.
 | |
| 
 | |
| ### Volumes & bind-mount
 | |
| 
 | |
| Bind-mount your `prometheus.yml` from the host by running:
 | |
| 
 | |
| ```bash
 | |
| docker run \
 | |
|     -p 9090:9090 \
 | |
|     -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \
 | |
|     prom/prometheus
 | |
| ```
 | |
| 
 | |
| Or bind-mount the directory containing `prometheus.yml` onto
 | |
| `/etc/prometheus` by running:
 | |
| 
 | |
| ```bash
 | |
| docker run \
 | |
|     -p 9090:9090 \
 | |
|     -v /path/to/config:/etc/prometheus \
 | |
|     prom/prometheus
 | |
| ```
 | |
| 
 | |
| ### Custom image
 | |
| 
 | |
| To avoid managing a file on the host and bind-mount it, the
 | |
| configuration can be baked into the image. This works well if the
 | |
| configuration itself is rather static and the same across all
 | |
| environments.
 | |
| 
 | |
| For this, create a new directory with a Prometheus configuration and a
 | |
| `Dockerfile` like this:
 | |
| 
 | |
| ```Dockerfile
 | |
| FROM prom/prometheus
 | |
| ADD prometheus.yml /etc/prometheus/
 | |
| ```
 | |
| 
 | |
| Now build and run it:
 | |
| 
 | |
| ```bash
 | |
| docker build -t my-prometheus .
 | |
| docker run -p 9090:9090 my-prometheus
 | |
| ```
 | |
| 
 | |
| A more advanced option is to render the configuration dynamically on start
 | |
| with some tooling or even have a daemon update it periodically.
 | |
| 
 | |
| ## Using configuration management systems
 | |
| 
 | |
| If you prefer using configuration management systems you might be interested in
 | |
| the following third-party contributions:
 | |
| 
 | |
| ### Ansible
 | |
| 
 | |
| * [Cloud Alchemy/ansible-prometheus](https://github.com/cloudalchemy/ansible-prometheus)
 | |
| 
 | |
| ### Chef
 | |
| 
 | |
| * [rayrod2030/chef-prometheus](https://github.com/rayrod2030/chef-prometheus)
 | |
| 
 | |
| ### Puppet
 | |
| 
 | |
| * [puppet/prometheus](https://forge.puppet.com/puppet/prometheus)
 | |
| 
 | |
| ### SaltStack
 | |
| 
 | |
| * [saltstack-formulas/prometheus-formula](https://github.com/saltstack-formulas/prometheus-formula)
 |