博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
docker之创建MariaDB镜像的方法
阅读量:5256 次
发布时间:2019-06-14

本文共 4720 字,大约阅读时间需要 15 分钟。

一、基于commit命令方式创建

docker的安装

1
2
3
[root@test01 ~]
# yum install docker
[root@test01 ~]
# systemctl enable docker
[root@test01 ~]
# systemctl start docker

下载本地镜像

1
2
3
4
[root@test01 ~]
# docker pull centos:7.4.1708
[root@test01 ~]
# docker images
REPOSITORY   TAG     IMAGE ID   CREATED    SIZE
docker.io
/centos
7.4.1708   3afd47092a0e  3 months ago  196.6 MB

创建交互型容器

1
[root@test01 ~]
# docker run -it --name="mysql_server" centos /bin/bash

4.安装mariadb服务

1
[root@e8126d0481d2 /]
# yum -y install mariadb-server net-tools

初始化mariadb

1
[root@e8126d0481d2 /]
# mysql_install_db --user=mysql

后台启动mariadb服务

1
2
3
4
5
6
7
8
9
10
[root@e8126d0481d2 /]
# mysqld_safe &
[1] 114
[root@e8126d0481d2 /]
#
180210 13:45:27 mysqld_safe Logging to
'/var/log/mariadb/mariadb.log'
.
180210 13:45:27 mysqld_safe Starting mysqld daemon with databases from
/var/lib/mysql
 
[root@e8126d0481d2 /]
# netstat -tunpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address   Foreign Address   State  PID
/Program
name
tcp  0  0 0.0.0.0:3306   0.0.0.0:*    LISTEN  -

创建mariadb登录密码,并可以指定ip登录

1
2
3
4
5
6
7
8
9
10
[root@e8126d0481d2 /]
# mysqladmin -u root password 'kingsoft'
[root@e8126d0481d2 /]
# mysql -u root -p
Enter password:
MariaDB [(none)]> show databases;
MariaDB [(none)]> use mysql;
MariaDB [mysql]>
select
Host from user where user=
'root'
;
MariaDB [mysql]> grant all privileges on *.* to
'root'
@
'%'
identified by
'kingsoft'
with grant option;
MariaDB [mysql]> update user
set
password=password(
'kingsoft'
) where user=
'root'
and host=
'e8126d0481d2'
;
MariaDB [mysql]> flush privileges;
MariaDB [mysql]>
exit

容器登录验证

1
2
3
[root@e8126d0481d2 /]
# mysql -u root -h 172.17.0.2 -p
Enter password:
MariaDB [(none)]>
exit

创建容器启动脚本

1
2
3
4
[root@e8126d0481d2 ~]
# cat run.sh
#!/bin/sh
 
mysqld_safe

创建镜像

1
2
3
4
[root@test01 ~]
# docker ps -a
CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS      PORTS    NAMES
e8126d0481d2  centos   
"/bin/bash"  
11 minutes ago  Exited (0) 8 seconds ago      mysql_server
[root@test01 ~]
# docker commit mysql_server mariadb:1.0

创建容器

1
2
3
4
[root@test01 ~]
# docker run -d -p 13306:3306 mariadb:1.0 /root/run.sh
[root@test01 ~]
# docker ps
CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS    PORTS      NAMES
eed3e88a1261  mariadb:1.0  
"mysqld_safe" 
4 seconds ago  Up 3 seconds  0.0.0.0:13306->3306
/tcp
romantic_hamilton

主机登录验证

1
2
3
[root@test01 ~]
# yum -y install mariadb
[root@test01 ~]
# mysql -u root --port=13306 -p
MariaDB [(none)]>

二、基于Dockerfile方式创建

设置创建目录和文件

1
2
3
[root@test01 ~]
# mkdir mariadb_dockerfile && cd mariadb_dockerfile
[root@test01 mariadb_dockerfile]
# touch db_init.sh
[root@test01 mariadb_dockerfile]
# touch run.sh

编辑Dockerfile等文件

Dockerfile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[root@test01 mariadb_dockerfile]
# cat Dockerfile
#使用的基础镜像
FROM centos:7.4.1708
 
#添加作者信息
MAINTAINER liuxin 842887233@qq.com
 
#安装mariadb数据库
RUN yum -y
install
mariadb-server
 
#设置环境变量,便于管理
ENV MARIADB_USER root
ENV MARIADB_PASS kingsoft
#让容器支持中文
ENV LC_ALL en_US.UTF-8
 
#初始化数据库
ADD db_init.sh
/root/db_init
.sh
RUN
chmod
775
/root/db_init
.sh
RUN
/root/db_init
.sh
 
#导出端口
EXPOSE 3306
 
#添加启动文件
ADD run.sh
/root/run
.sh
RUN
chmod
775
/root/run
.sh
 
#设置默认启动命令
CMD [
"/root/run.sh"
]

db_init.sh

1
2
3
4
5
6
7
8
9
10
11
12
[root@test01 mariadb_dockerfile]
# cat db_init.sh
#!/bin/bash
 
mysql_install_db --user=mysql
sleep
3
mysqld_safe &
sleep
3
#mysqladmin -u "$MARIADB_USER" password "$MARIADB_PASS"
mysql -e
"use mysql; grant all privileges on *.* to '$MARIADB_USER'@'%' identified by '$MARIADB_PASS' with grant option;"
h=$(
hostname
)
mysql -e
"use mysql; update user set password=password('$MARIADB_PASS') where user='$MARIADB_USER' and host='$h';"
mysql -e
"flush privileges;"

run.sh

1
2
3
[root@test01 mariadb_dockerfile]
# cat run.sh
#!/bin/bash
mysqld_safe

创建镜像

1
[root@test01 mariadb_dockerfile]
# docker build -t liuxin/centos-mariadb:v1 ./

创建容器

1
2
3
4
[root@test01 mariadb_dockerfile]
# docker run -d -p 13306:3306 liuxin/centos-mariadb:v1 /root/run.sh
[root@test01 mariadb_dockerfile]
# docker ps
CONTAINER ID  IMAGE      COMMAND    CREATED    STATUS    PORTS      NAMES
7743527ac603  liuxin
/centos-mariadb
:v1
"/root/run.sh" 
5 seconds ago  Up 3 seconds  0.0.0.0:13306->3306
/tcp
nostalgic_mirzakhani

登录验证

1
2
3
4
5
6
7
8
9
10
11
[root@test01 mariadb_dockerfile]
# mysql -uroot -h 127.0.0.1 --port=13306 -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection
id
is 1
Server version: 5.5.56-MariaDB MariaDB Server
 
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
 
Type
'help;'
or
'\h'
for
help. Type
'\c'
to
clear
the current input statement.
 
MariaDB [(none)]>
exit

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

转载于:https://www.cnblogs.com/zknublx/p/9324205.html

你可能感兴趣的文章
display:inline-block 在IE6中实现{转}
查看>>
ajax+springmvc返回中文乱码的解决办法
查看>>
Day1_Python学习
查看>>
JS 数组常用的方法
查看>>
【HTML】 向网页<Title></Title>中插入图片以及跑马灯
查看>>
hdfs HA原理
查看>>
编程珠玑第一章
查看>>
mysql主从同步报slave_sql_running:no的解决方案
查看>>
数组与指针
查看>>
mysql数据库 中文乱码
查看>>
给图片添加文字
查看>>
[汇总] UNP -- UNIX网络编程
查看>>
跨入安全的殿堂--读《Web入侵安全测试与对策》感悟
查看>>
appscan 安全漏洞修复办法
查看>>
函数的基本应用
查看>>
BestCoder37 1001.Rikka with string 解题报告
查看>>
Data Access Application Block 3.1
查看>>
unity 按tab键切换下一个inputfild
查看>>
Mysql修改时间的年月日,时分秒保持不变语句
查看>>
线性稳压电源原理(分析相对可以)
查看>>