1.4. Names

Naming a container

Unlike the CONTAINER ID, the NAME is something we can manipulate. The name is handy, not only for starting/connecting/stopping/destroying a container, but also for networking (which we will see in a later lab).

To set a name, add the --name parameter to Docker’s run command:

docker run --name mariadb-container -e MARIADB_ROOT_PASSWORD=my-secret-pw -d mariadb

As always, to check if this has really worked out, look at the container list:

docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
6f08ac657320        mariadb             "docker-entrypoint..."   58 seconds ago      Up 57 seconds       3306/tcp            mariadb-container
699e82ed8f1f        mariadb             "docker-entrypoint..."   24 minutes ago      Up 24 minutes       3306/tcp            jolly_bardeen

Instead of accessing the database from inside the container like in the last lab, we access it from outside using a local mysqlclient.

This is a bit tricky. First find out the IP address of your docker container. Therefore, use this command:

docker inspect mariadb-container  -f '{{ range.NetworkSettings.Networks }}{{ .IPAddress }}{{ end }}'

docker inspect <container> shows you details about a running container in JSON format (run it yourself and take a look at it). We filtered the json to only get the IP address of the container.
We could also have filtered the output with grep: docker inspect mariadb-container | grep IPAddress but our solution is more elegant 😊.

Once you have the IP (in your example 172.17.0.2) connect to it:

mysql -h172.17.0.2 -uroot -pmy-secret-pw 

If everthings works, exit mysql-client

exit;
🤔 Can you imagine another way to access the database?

Instead of entering the container from outside with mysql, we could also directly run mysql inside the container: docker exec -it mariadb-container mariadb -uroot -pmy-secret-pw