需求
使用Alpine安装MySQL
步骤
1. 创建容器
# 创建一个alpine容器,并命名为 alpine-mysql
docker run -it --name alpine-mysql alpine
2. 更新apk
apk
是Alpine 自带的包管理器,使用Alpine软件前应先更新一下。
apk update
3. 安装MySQL
# alpine 中MySQL 用的就是MariaDB
apk add --no-cache mysql mysql-client
# 或
apk add mariadb mariadb-client
如下:mysql
可执行文件指向mariadb
安装openrc
openrc
是Alpine服务控制器,负责Alpine服务启动,添加、删除、更新及启动停止等。安装它有助于将MySQL服务管理起来。
apk add openrc --no-cache
openrc
相关详见 https://editor.csdn.net/md/?articleId=122838103
安装完成后执行命令rc-status
可以查看本地机上服务的当前状态,如上图所示。
4. 启动
- 将 mariadb 注册为服务
rc-update add mariadb default
- boot openrc
touch /run/openrc/softlevel
- 创建数据库
/etc/init.d/mariadb setup
- 启动 mariadb 服务
rc-service mariadb start
启动后可以使用 rc-sttaus
查看到 mariadb
已经启动
6. 连接测试
-
客户端交本地连接
-
客户端远程连接
远程客户端连接需要容器与外网通信,而当前的容器并不支持外部网络访问,我们可以先将容器commit
为一个新的镜像,这相当于我们制作了一个自己的镜像,然后在指定端口映射访问。
提交新容器
docker commit -a "xzbd" -m "a mysql image based on alpine" a88de0896ee5 alpine-mysql:v1
其中-a
表示作者,-m
表示描述,a88de0896ee5
是当前容器的ID, alpine-mysql:v1
是新的镜像名。
启动容器
docker run -it --name alpine-mysql-server -p 3306:3306 alpine-mysql
使用新镜像 alpine-mysql:v1
实例化一个容器,命名为 alpine-mysql-server
,指定端口映射为本地3306到容器3306。第一个3306是本地端口,第二个3306是容器内的端口。
使用Navicat连接
7. 设置账户密码
mysqladmin -u root password "123456"
遇到的问题
- You are attempting to run an openrc service on a system which openrc did not boot.
该问题该问题根据提示执行 touch /run/openrc/softlevel
即可解决。
- Datadir ‘/var/lib/mysql’ is empty or invalid.
同样根据提示执行 /etc/init.d/mariadb setup
即可解决。
总结
通过一步一步搭建环境,实现了Alpine安装MySQL。产出的alpine-mysql:v1
镜像可以保留,已备以后使用。
回顾一下,将本文中左右命令处理,写成一个DockerFile文件,使用 docker build
也可以实现制作自己的MySQL镜像。