1、制作基于base镜像rockylinu9,安装源码mysql版本8.0软件。要求启动默认无用户登录,用户可以使用 docker run -d centos-mysql:8.0 -u root -p登录。
时间: 2024-03-07 07:51:40 浏览: 207
Docker安装MySQL8.0的实现方法
可以按照以下步骤来实现:
1. 创建一个 Dockerfile 文件,内容如下:
```
FROM rockylinux/rockylinux:8.4
RUN dnf update -y && \
dnf install -y wget && \
wget https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm && \
rpm -ivh mysql80-community-release-el8-1.noarch.rpm && \
dnf install -y mysql-community-server && \
dnf clean all && \
rm -rf /var/cache/dnf/* && \
rm -rf /tmp/mysql80-community-release-el8-1.noarch.rpm && \
mkdir /docker-entrypoint-initdb.d
COPY ./my.cnf /etc/my.cnf
RUN chown -R mysql:mysql /var/lib/mysql /var/run/mysqld && \
chmod 777 /var/run/mysqld
VOLUME /var/lib/mysql
EXPOSE 3306
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["mysqld"]
```
2. 创建一个 my.cnf 文件,内容如下:
```
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
default_authentication_plugin=mysql_native_password
max_allowed_packet=256M
```
3. 创建一个 docker-entrypoint.sh 文件,内容如下:
```
#!/bin/bash
set -eo pipefail
if [ ! -d "/var/lib/mysql/mysql" ]; then
echo "Initializing MySQL..."
/usr/sbin/mysqld --initialize-insecure --user=mysql
echo "MySQL initialized"
fi
echo "Starting MySQL..."
exec /usr/sbin/mysqld --user=mysql --console
```
4. 在 Dockerfile 所在目录下执行以下命令进行构建:
```
docker build -t centos-mysql:8.0 .
```
5. 执行以下命令运行容器:
```
docker run -d -p 3306:3306 -v /path/to/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=<your_password> --name mysql centos-mysql:8.0
```
其中,`/path/to/data` 是你想要将容器中的 MySQL 数据保存到本地的路径,`<your_password>` 是你为 MySQL root 用户设置的密码。运行成功后,你就可以使用以下命令登录到 MySQL:
```
docker run -it --rm --network container:mysql centos-mysql:8.0 mysql -u root -p
```
注意,这里使用了 `--network container:mysql` 参数,让容器使用已有的 MySQL 容器的网络命名空间,从而可以直接访问 MySQL。
阅读全文