MySQL on Docker?

mysql docker-compose
docker mysql port
docker mysql volume
docker mysql alpine
docker mysql create database
docker mysql server
install mysql on docker toolbox
setting up mysql on docker

i'm new to Docker and still exploring, have this issue which may look silly but i'm really stuck.

so i have a spring bot app that uses a mysql server and i want to run my app on a container.

i managed to do run an ap without my sql. now i'm following this tutorial in order to install mysql in a container and use that container to run my app.

https://medium.com/@itsromiljain/dockerize-rest-spring-boot-application-with-hibernate-having-database-as-mysql-579abcc4edc4

so when i run this command:

 docker run -p 6603:3306 --name=docker-mysql --env="MYSQL_ROOT_PASSWORD=root" --env="MYSQL_PASSWORD=root" --env="MYSQL_DATABASE=test" mysql

i get this error :

My guess is because i have MySQL installed and running in my machine, but i'm not convinced because the container is supposed to be isolated.

PS: i'm running docker on a windows 10 machine using windows containers. thank you. EDIT: this is the text format of the ERROR

2019-02-08T09:09:23.467525Z 1 [ERROR] [MY-012574] [InnoDB] Unable to lock ./ibdata1 error: 95 2019-02-08T09:09:23.468063Z 1 [ERROR] [MY-012592] [InnoDB] Operating system error number 95 in a file operation. 2019-02-08T09:09:23.468133Z 1 [ERROR] [MY-012596] [InnoDB] Error number 95 means 'Operation not supported' 2019-02-08T09:09:23.468193Z 1 [ERROR] [MY-012215] [InnoDB] Cannot open datafile './ibdata1' 2019-02-08T09:09:23.468275Z 1 [ERROR] [MY-012959] [InnoDB] Could not open or create the system tablespace. If you tried to add new data files to the system tablespace, and it failed here, you should now edit innodb_data_file_path in my.cnf back to what it was, and remove the new ibdata files InnoDB created in this failed attempt. InnoDB only wrote those files full of zeros, but did not yet use them in any way. But be careful: do not remove old data files which contain your precious data! 2019-02-08T09:09:23.468387Z 1 [ERROR] [MY-012929] [InnoDB] InnoDB Database creation was aborted with error Cannot open a file. You may need to delete the ibdata1 file before trying to start up again. 2019-02-08T09:09:24.070144Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed. 2019-02-08T09:09:24.070172Z 0 [ERROR] [MY-013236] [Server] Newly created data directory /var/lib/mysql/ is unusable. You can safely remove it. 2019-02-08T09:09:24.070759Z 0 [ERROR] [MY-010119] [Server] Aborting 2019-02-08T09:09:24.072260Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.15) MySQL Community Server - GPL.

First off: running your exact docker command on my Ubuntu Linux machine runs mysql within the container without problems.

But of course, that is no help to you, so let's look at your problem:

This problem should not be related to the mysql instance running on your local machine, because, as you stated, the application inside the docker container is isolated from the host machine.

It seems that this is a problem with storage. For some reason, the mysql application inside the docker container cannot property use /var/lib/mysql (also, inside the docker container. The error message clearly states this:

... data directory /var/lib/mysql is unusable.

This can be either a problem with your docker installation itself, a problem with the image, or a problem with the configuration of mysql within the container. The second I would say is unlikely, because the mysql docker image is widely used, and considered quite stable. The latter option is always a possibility, but seeing as you are not doing that much different from the examples on the docker hub page, and I am able to run the exact command on my machine, I am inclined to blame the first option.

Have you tried providing the image with a docker volume? (See https://docs.docker.com/storage/ for a global reference)

The simplest type is managed by docker and added to the docker command like this:

-v mysql_data:/var/lib/mysql

Your command then becomes:

docker run -v mysql_data:/var/lib/mysql -p 6603:3306 --name=docker-mysql --env="MYSQL_ROOT_PASSWORD=root" --env="MYSQL_PASSWORD=root" --env="MYSQL_DATABASE=test"  mysql

If you want to mount it to a directory on your host machine, use this argument:

-v <local path>:/var/lib/mysql

mysql/mysql-server, The MySQL Docker images maintained by the MySQL team are built specifically for Linux platforms. Other platforms are not supported, and users using these� Logging into the MySQL Server. The next thing you will need to do is log into the containerized server. This can be done with the command: docker exec -it mysql01 mysql -uroot -p

The error message "Newly created data directory /var/lib/mysql/ is unusable" also comes up because of size issue. Check/increase the underlying server size or the docker allocated size for the system.

7.6.1 Basic Steps for MySQL Server Deployment with Docker, In this post, we will cover some basics around running MySQL in a Docker container. It walks you through how to properly fire up a MySQL� MySQL is a well-known open-source relational database management system and one of the most popular web server solutions. It stores and structures data in a meaningful manner, ensuring easy accessibility. Docker is a set of platform-as-a-service products that support CI/CD development.

In case someone is having the same problem. Switching back to Linux Containers solved the problem for me.

see the images below in order to figure how to to do it ( right click on docker icon below then choose corresponding containers (as a matter of fact if u are using windows containers u will find switch to linux containers and vice versa :

MySQL Docker Containers: Understanding the Basics, Deploying a database container is becoming popular among smaller-scaled applications. In this tutorial, Set up a MySQL Docker container� As Adminer runs on the same Docker network as MySQL, it can access the MySQL container via port 3306 (or simply, by the container’s name). Note: We can’t access the MySQL container through port

How to Set Up & Configure a MySQL Docker Container {Tutorial}, Create and run multiple versions of MySQL in Docker containers. Let's go through these one-by-one. 1. Create a Docker Compose YAML File for� As you can see, for the mysql-server service, the Docker host port 3306 is mapped to the container TCP port 3306. For the phpmyadmin service, the Docker host port 8080 is mapped to the container TCP port 80. Accessing phpMyAdmin 5 or MySQL server from Other Computers:

Setting Up a MySQL Database in Docker, This post, part one, is focused on MySQL Server. Docker is actually not my most preferred way as it does not match a typical production install,� Deployment & Scaling Docker MySQL Docker is quickly becoming mainstream, as a method to package and deploy self-sufficient applications in primarily stateless Linux containers. But for a stateful service like a database, this might be bit of a headache. How do we best configure MySQL in a container environment?

Installing MySQL with Docker, This post will show you how to install MYSQL using DOCKER which can eaily help you manage your database environment on macOS, Linux� phpMyAdmin is an most popular web application for managing MySQL database servers. In this tutorial, we just use an example of Docker container for MySQL and phpMyAdmin. So first create a docker-compose.yml file on your system with the following content.

Comments
  • Please share your error message in text form, that makes it way more readable
  • i edited the post
  • Did you try to run the docker command but like linux container and not windows container?
  • i did not undrestand. u mean i switch my docker desktop to work with linux containers ?
  • i created the folder mysql_data and run the command. and i'm getting this error now 2019-02-08T10:09:25.160751Z 0 [ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting. 2019-02-08T10:09:25.160794Z 0 [ERROR] [MY-013236] [Server] Newly created data directory /var/lib/mysql/ is unusable. You can safely remove it. 2019-02-08T10:09:25.161014Z 0 [ERROR] [MY-010119] [Server] Aborting 2019-02-08T10:09:25.161495Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.15) MySQL Community Server - GPL.`
  • i think the issue of /var/lib/mysql being unusable remains
  • What exaclty do you mean when you say 'created the folder mysql_data'? What command did you run? The first example I gave should create a managed volume for you, you shouldn't have to do anything.
  • Also, just to be sure you are not working with the old, defective container, you should remove that container before running it again: docker rm -f docker-mysql
  • it was a stupid guess to create a folder named mysql_data in my current directory (** feeling shy**) and yes i deleted the container .. anyway still having the same error i mentioned in the comment :/ :/
  • What does that mean? Do you mean LXC?
  • @NicoHaase right click on running docker icon and choose switch to linux containers
  • Please add all clarification to the answer, not to the comment section. While using Docker for months, I haven't seen any "Docker icon" so far