Docker + MariaDB 给我错误 2002 (HY000):无法通过套接字 '/var/run/mysqld/mysqld.sock' 连接到本地 MySQL 服务器 (2)

Docker + MariaDB gives me ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

我尝试在 Debian 容器中安装和 运行 MariaDB。一切正常,直到我想要 运行 mysql -u root。这是我的 Dockerfile。

FROM debian:buster-slim

RUN apt-get update && \
    apt-get install -y curl \
                       build-essential

RUN apt-get install -y mariadb-client
RUN apt-get install -y mariadb-server
RUN service mysql start
RUN mysql -u root

我收到以下错误消息:错误 2002 (HY000):无法通过套接字 '/var/run/mysqld/mysqld.sock' (2)

连接到本地 MySQL 服务器

您不能只 运行 mysql 在构建过程中处理。它应该在你 运行 容器时完成。例子: 构建:

FROM debian:buster-slim

RUN apt-get update && \
    apt-get install -y curl \
                       build-essential

RUN apt-get install -y mariadb-client
RUN apt-get install -y mariadb-server

ENTRYPOINT service mysql start && mysql -uroot

然后构建镜像:

docker build -t my-mysql-image .

最后您可以 运行 容器并登录 mysql shell:

docker run -ti --rm --name my-mysql-service my-mysql-image

顺便说一下,dockerhub https://hub.docker.com/_/mariadb 上有官方的 mariadb 镜像,您可以使用它来代替自定义构建。