Docker Cheat Sheet for Common Database Engine
I use docker almost everyday, and usually everything is already set-up in the project.
But from time to time I need one or a few tools to do something. For example, when I contribute to a project that require a Database, I need a PostgreSQL container. Or sometime I need to explore some data and I need Elasticsearch or Grafana.
In this short blog post, I’ll share with you some containers I use.
Section intitulée networkNetwork
Some containers need a network to talk to each other (like Elasticsearch &
Kibana or InfluxDB & Grafana). To keep it simple, I put all containers in the
same tools
network.
docker network create tools
If you forget to select a network when starting a container, you can connect it later with:
docker network connect tools grafana
Section intitulée containerContainer
Almost all tools write data on disk. And I don’t want to lose theses data if I drop a container. So I create a named volume for each one.
If you don’t remember where to mount the volume, you can use the following command to find it:
$ docker inspect mysql:8 --format '{{ .Config.Volumes }}'
map[/var/lib/mysql:{}]
In this case, the volume must be mounted to /var/lib/mysql
.
I also bind the default port of the container to the host, it eases the interaction with other tools on my host.
Section intitulée how-to-start-a-postgresql-14-x-docker-containerHow to start a PostgreSQL 14.x docker container
docker run -d --name=postgres14 -v postgres14:/var/lib/postgresql/data --network tools -p 5432:5432 -e POSTGRES_PASSWORD=password postgres:14
Then from your host:
PGPASSWORD=password psql -h 127.0.0.1 -U postgres
Or you can enter into the container directly:
docker exec -it postgres14 psql -U postgres
Section intitulée how-to-start-a-mysql-8-x-docker-containerHow to start a MySQL 8.x docker container
docker run -d --name mysql8 -v mysql8:/var/lib/mysql --network tools -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password mysql:8
Then from your host:
mysql -h127.0.0.1 -uroot -ppassword
Or you can enter into the container directly:
docker exec -it mysql8 mysql -uroot -ppassword
Section intitulée how-to-start-a-redis-6-x-docker-containerHow to start a Redis 6.x docker container
docker run -d --name redis6 -v redis6:/data --network tools -p 6379:6379 redis:6
Then from your host:
redis-cli
Or you can enter into the container directly:
docker exec -it redis6 redis-cli
Section intitulée how-to-start-a-rabbitmq-3-x-docker-containerHow to start a RabbitMQ 3.x docker container
docker run -d --name rabbitmq3 -v rabbitmq3:/var/lib/rabbitmq --network tools -p 5672:5672 -p 15672:15672 rabbitmq:3.9-management
Then you can open http://127.0.0.1:15672/
Section intitulée how-to-start-a-influxdb-1–7-x-docker-containerHow to start a InfluxDB 1.7.x docker container
docker run -d --name influxdb1 -v influxdb1:/var/lib/influxdb --network tools -p 8086:8086 influxdb:1.7
The API is available at http://127.0.0.1:8086/
You can create your first database with:
docker exec influxdb1 influx -execute "create database stat"
Then
docker exec -it influxdb1 influx --database stat
Section intitulée how-to-start-a-grafana-oss-docker-containerHow to start a Grafana (OSS) docker container
docker run -d --name grafana -v grafana:/var/lib/grafana/ --network tools -p 3000:3000 grafana/grafana-oss
Then you can open http://127.0.0.1:3000/
Section intitulée how-to-start-a-elasticsearch-7-x-docker-containerHow to start a Elasticsearch (7.x) docker container
docker run -d --name elasticsearch7 -v elasticsearch7:/usr/share/elasticsearch/data --network tools -p 9200:9200 -e ES_JAVA_OPTS="-Xms1g -Xmx1g" -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.13.4
The API is available at http://127.0.0.1:9200/
Section intitulée how-to-start-a-kibana-7-x-docker-containerHow to start a Kibana (7.x) docker container
docker run -d --name kibana7 --network tools -p 5601:5601 -e 'ELASTICSEARCH_HOSTS=["http://elasticsearch7:9200"]' docker.elastic.co/kibana/kibana:7.13.4
Then you can open http://127.0.0.1:5601/
Section intitulée stop-startStop / Start
When you don’t need the container anymore, you can stop it with:
docker stop postgres14
And it you need it back:
docker postgres14
Section intitulée conclusionConclusion
Docker is a very powerful tool, and can help to isolate your development environment. It can also help you to test some product before really integrate them in your favorite stack.
I hope you like this cheat sheet. I’ll keep it updated, so don’t hesitate to bookmark it.
Commentaires et discussions
Ces clients ont profité de notre expertise
Refonte complète de la plateforme d’annonces immobilières de Cushman & Wakefield France. Connecté aux outils historiques, cette nouvelle vitrine permet une bien meilleure visibilité SEO et permet la mise en avant d’actifs qui ne pouvaient pas l’être auparavant.
Nous avons développé un outil statistique complet développé pour ORPI. Basé sur PHP, Symfony et Elasticsearch, cet outil offre à toutes les agences du réseau une visibilité accrue sur leurs annonces. Il garantit également une transparence totale envers les clients, en fournissant des statistiques détaillées sur les visualisations et les contacts de…
Ouibus a pour ambition de devenir la référence du transport en bus longue distance. Dans cette optique, les enjeux à venir de la compagnie sont nombreux (vente multi-produit, agrandissement du réseau, diminution du time-to-market, amélioration de l’expérience et de la satisfaction client) et ont des conséquences sur la structuration de la nouvelle…