生信log

生信log30|从0构建非ROOT用户也可以修改的Singula

2022-12-25  本文已影响0人  小周的万用胶囊

从0构建非ROOT用户也可以修改的Singularity镜像-以安装Mysql-server为例-超算平台

吐槽:前段时间有需要集群上使用数据库的服务,因此下载了网上已有的Singulariy镜像,结果发现这个轮子使用前居然要求用root用户对镜像先进入镜像内进行交互设置。不得不说Root用户使用官网上已有的镜像是非常丝滑的,但是非root用户却被权限处处卡脖子,尤其是在宿主机和容器的通讯和容器设置这方面。这时候就得用户从头构建镜像文件了(搞基建),在这里以mariadb为例(mysql的免费版)。吐槽一句,Singularity说是非root友好,但实际上却是处处root,或者fakeroot(实际上还是需要宿主机上需要root用户权限)

0. 思路和目的

目的

1. 准备-Singularity镜像文件(Definition File)的编写

 Bootstrap:shub #此处直接拉取系统的镜像
 From:centos-base
    
%file #拷贝文件进入镜像
    
source_path dest_path
    
%post #这里是下载软件的地方,镜像内执行的命令写在此处
yum install less
yum install vim
yum install wget
yum install xz
yum install -y libsystemd.so.0 #这个不安装mysql会报错
yum clean all
groupadd mysql
useradd -m -g mysql mysql
useradd -m -g mysql not_root_user#创建非root用户,宿主机上也需要有
su not_root_user #换到非root用户
mkdir mysql
mkdir /mysql/db
wget mariadb_安装包下载地址
tar -xvf mariadb_version.tar.gz
rm -f mariadb_version.tar.gz
ln -s /mariadb/mariadb_version_解压缩后的文件夹 mysql
chmod -R 777 /mariadb/mysql #修改目录权限
chmod 644 /mariadb/.my.cnf #修改文件权限,mysql规定了这个文件不能设置人人可读写的,必须改成除了管理员以外只读的权限,这个配置文件写不写都可以,到时候映射进去就行。
cd /mariadb/mysql/
    
%startscript
exec "mysqld_safe" --defaults-=/your_path/.my.cnf

Singularity镜像的小细节

2. 检查启动Mysql的服务状态

镜像实例启动命令

singularity instance start --writable-tmpfs -B db/:/var/lib/mysql mariadb.sif mariadb

启动后还需检查进程是否存在,可使用以下方法

not_root+ 19014  0.0  0.0   9708  1592 pts/2    S+   17:37   0:00 /bin/sh ./bin/mysqld_safe --datadir=/mariadb/tmp
not_root+ 19088  0.5  0.2 1039484 90348 pts/2   Sl+  17:37   0:00 /mariadb/mysql/bin/mariadbd --basedir=/mariadb/mysql --datadir=/mariadb/tmp --plugin-dir=/mariadb/mysql/lib/plugin --user=mysql --log-error=/mariadb/tmp/manager.err --pid-file=manager.pid
netstat -anp|grep port
mysql -h ip_address -u user -pPassword
容器外登录

3. 其他注意的点

Mysql的坑

ps:走过路过,求观众老爷们点个赞


参考

mariadb镜像内的设置
非root用户安装使用Mysql

上一篇下一篇

猜你喜欢

热点阅读