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
Dans le cadre d’une refonte complète de son architecture Web, Expertissim a sollicité l’expertise de JoliCode afin de tenir les délais et le niveau de qualité attendus. Le domaine métier d’Expertissim n’est pas trivial : les spécificités du marché de l’art apportent une logique métier bien particulière et un processus complexe. La plateforme propose…
Afin de soutenir le développement de son trafic, Qobuz a fait appel à JoliCode afin d’optimiser l’infrastructure technique du site et les échanges d’informations entre les composants de la plateforme. Suite à la mise en place de solution favorisant l’asynchronicité et la performance Web côté serveur, nous avons outillé la recherche de performance et…
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.