Docker系列之实战:3.安装MariaDB
环境
[root@centos181001 ~]# cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)
[root@centos181001 ~]# docker -v
Docker version 18.09.1, build 4c52b90
第一步:搜索和拉取官方MariaDB镜像
https://hub.docker.com/_/mariadb
基于ubuntu:trusty
### 搜索镜像
docker search mariadb
### 拉取最新镜像
docker pull mariadb
### 拉取指定版本镜像
docker pull mariadb:5.5.63-trusty
### 查看拉取的镜像
docker image ls
docker image ls mariadb
第二步:使用Image
1.启动MariaDB
docker run --rm --name some-mariadb -e MYSQL_ROOT_PASSWORD=xiaoliu -d mariadb:5.5.63-trusty
MYSQL_ROOT_PASSWORD=my-secret-pw 指定MariaDB数据库的root密码
#### 进入容器并操作数据库
docker exec -it some-mariadb bash
mysql -uroot -pxiaoliu
show databases;
2.启动MariaDB并放开3306端口,以允许外部连接
docker run --rm --name some-mariadb -p 3306:3306 -e MYSQL_ROOT_PASSWORD=xiaoliu -d mariadb:5.5.63-trusty
#### 1.宿主机安装MariaDB客户端连接容器内数据库实例
yum install -y mariadbnetst
mysql -h127.0.0.1 -uroot -pxiaoliu
#### 2.宿主机安装mycli并连接mariadb
#### Mycli是一个基于Python开发的MySQL命令行客户端工具,具有自动完成和语法突出显示功能。
yum install -y epel-release
yum install -y python-pip python-devel
pip install mycli
mycli -h localhost -u root -p xiaoliu
mycli -h 127.0.0.1 -u root -p xiaoliu
mycli -h 11.11.11.61 -u root -p xiaoliu
#### 3.也可以在外部,使用 Navicat 工具连接数据库,IP地址使用宿主机的IP地址
3.使用自定义my.cnf
配置文件路径:
/etc/mysql/my.cnf
/etc/mysql/conf.d/*.cnf
#### 1.首先运行一个临时容器
docker run --rm --name tmp-mariadb -e MYSQL_ROOT_PASSWORD=xiaoliu -d mariadb:5.5.63-trusty
#### 2.从运行的容器里将配置文件copy到本地
docker cp tmp-mariadb:/etc/mysql/my.cnf /home/mariadb/
#### 3.删除这个临时容器
docker rm -f tmp-mariadb
#### 4.编辑配置文件后使用Dockerfile重新建立新镜像即可。
$ docker run --name some-mariadb -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadb:tag
4.没有cnf文件的配置
#### 许多选项可以通过参数传递给服务器,而可以不自定义my.cnf
#### 比如要更改所有表的默认编码和排序规则,可以使用以下命令启动容器
docker run --name some-mariadb
-e MYSQL_ROOT_PASSWORD=my-secret-pw
-d mariadb:5.5.63-trusty
--character-set-server=utf8mb4
--collation-server=utf8mb4_unicode_ci
#### 查看支持选项完整列表
docker run -it --rm mariadb:5.5.63-trusty --verbose --help
5.使用docker stack deploy or docker-compose
#### 1.安装docker-compose
curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)"
-o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
#### 2.创建stack.yml文件
cat <<EOF >stack.yml
# Use root/example as user/password credentials
version: '3.1'
services 大专栏 Docker系列之实战:3.安装MariaDB:
db:
image: mariadb
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
adminer:
image: adminer
restart: always
ports:
- 8080:8080
EOF
#### 3.执行以下任意命令
docker stack deploy -c stack.yml mariadb
docker-compose -f stack.yml up
#### 4.等待他完全初始化并打开浏览器测试
http://11.11.11.61:8080
6.通过Docker查看日志
docker logs some-mariadb
7.支持的变量
启动mariadb映像时,可以通过在docker run命令行上传递一个或多个环境变量来调整MariaDB实例的配置。请注意,如果使用已包含数据库的数据目录启动容器,则以下任何变量都不会产生任何影响:任何预先存在的数据库在容器启动时始终保持不变。
MYSQL_ROOT_PASSWORD 必需,用来指定MariaDB ``root``密码
MYSQL_DATABASE 可选,允许您指定要在映像启动时创建的数据库的名称。
如果提供了用户/密码(见下文),则该用户将被授予对该数据库的超级用户访问权限(对应于GRANT ALL)。
MYSQL_USER, MYSQL_PASSWORD 可选,可以结合使用来创建新用户并设置该用户的密码。
此用户将被授予MYSQL_DATABASE变量指定的数据库的超级用户权限(参见上文)。
这两个变量都是创建用户所必需的。
MYSQL_ALLOW_EMPTY_PASSWORD 可选,设置为yes允许以root用户的空密码启动容器。
MYSQL_RANDOM_ROOT_PASSWORD 可选,设置yes为为root用户生成随机初始密码(使用pwgen)。
生成的root密码将打印到stdout(GENERATED ROOT PASSWORD: .....)。
8.Docker的秘密
作为通过环境变量传递敏感信息的替代方法,_FILE可以将其附加到先前列出的环境变量,从而使初始化脚本从容器中存在的文件加载这些变量的值。
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql-root -d mariadb:tag
支持以下选项:
MYSQL_ROOT_PASSWORD
MYSQL_ROOT_HOST
MYSQL_DATABASE
MYSQL_USER
MYSQL_PASSWORD.
9.数据持久化
#### 1.在主机系统(容器外部)上创建一个数据目录,并将其挂载到容器内可见的目录中。
mkdir /home/data
#### 2.启动容器
docker run --name some-mariadb -v /home/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=xiaoliu -d mariadb
#### 3.创建测试数据
create database test;
use test;
create table linux(username varchar(15) not null,password varchar(15) not null);
insert into linux values ('XiaoMing', 'xiaoliu');
insert into linux values ('XiaoHong', '12346'), ('HongHong', '12346');
commit;
#### 4.停止容器后再启动容器或者删除容器后再使用以下命令启动一个新的容器,之前的数据都会存在。
docker run --name some-mariadb -v /home/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=xiaoliu -d mariadb
10.备份数据库
docker exec some-mariadb sh
-c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"'
> /some/path/on/your/host/all-databases.sql
像下边这样启动另外有一个容器,以便可以让另外的容器可以连接到MySQL容器(未完)
docker run --name some-app --link some-mariadb:mysql -d application-that-uses-mysql
测试:
docker pull centos
docker run --rm -it --link some-mariadb:mysql centos bash
yum install -y mariadb
Docker系列之实战:3.安装MariaDB的更多相关文章
- Docker系列之MySQL安装教程
Docker系列之MySQL安装教程 有了前面的基础教程Docker系列之常用命令操作手册之后,本博客记录一篇mysql的安装教程 mysql镜像查询命令 docker search mysql 几个 ...
- Ubuntu Server下docker实战 01: 安装docker
本系列文章主旨在于使用docker来搭建实际可用的基础服务,具体到每一步的操作和设置. 关于docker的原理.前世今生的内容,园子里已经有太多的文章了,此处就不再赘述. 要使用docker,当然第一 ...
- Docker系列(一)Docker概述,核心概念讲解,安装部署
部分内容参考链接: Docker实战总结(非常全面,建议收藏) 一. Docker概述 Docker是一个开源的应用容器引擎(基于Go语言开发),让开发者可以打包他们的应用以及依赖包到一个可移植的容器 ...
- Docker系列(七)Shipyard安装及介绍
Shipyard 是一个基于 Web 的 Docker 管理工具,支持多 host,可以把多个 Docker host 上的 containers 统一管理:可以查看 images,甚至 build ...
- Docker系列(一)安装
操作系统版本:Centos7 Docker版本:1.8 设置安装源 1 cat > /etc/yum.repos.d/docker.repo << -EOF 2 [dockerr ...
- Docker系列(一)CentOS 6.5 离线安装、不升级内核
本特安装教程特点 1.由于是离线下载,需要提前下载好需要的依赖包 2.使用的版本为Centos6.5 3.不升级内核 4.提供异常解决方案. 安装过程 一.下载依赖包(使用能联网的节点) 依赖包可以自 ...
- Docker系列一:Docker的介绍和安装
Docker介绍 Docker是指容器化技术,用于支持创建和实验Linux Container.借助Docker,你可以将容器当做重量轻.模块化的虚拟机来使用,同时,你还将获得高度的灵活性,从而实现对 ...
- docker系列(一):docker基础与安装笔记
1 什么是docker docker是基于GO语言编写的开源容器项目,诞生于2013年初,到目前为止,已经经历了6年的发展演变.现如今,docker已经非常火爆,特别是在一线IT企业,部署.运维等工作 ...
- Docker系列——Docker安装&基础命令
Docker 概述 Docker 是一个开源的应用容器引擎,Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化. ...
随机推荐
- 显著水平|区间估计|假设检验|显著性|第一类错误|Ⅱ类错误|β错误|t检验|连续性矫正|二项分布的假设检验|样本百分率|
第三章 假设检验 区间估计与假设检验的基本区别? 上一章中讨论了置信区间的估计方法.它是利用样本数据,以抽样总体的分布为理论基础,用一定的概率保证来计算出原总体中未知参数的区间范围.特别值得注意的是: ...
- ZJNU 2208 - 你渴望力量吗
在图的最外面套一层0(防止到头) 然后搜索图有多少块在 '0'有两块0,一块1 '1'有一块0,一块1 其余情况不存在 #include<stdio.h> ],dx[]={,,,-},dy ...
- Vue专题-组件
vue.js既然是框架,那就不能只是简单的完成数据模板引擎的任务,它还提供了页面布局的功能.本文详细介绍使用vue.js进行页面布局的强大工具,vue.js组件系统. Vue.js组件系统 每一个新技 ...
- int a;和 int &a;的区别
int a的意思是定义一个变量a int &a意思是定义一个引用 //引用相当于指针再取值 他和被引用的变量都是表示同一块内存 引用就是给变量取别名 int b ;int &a=b; ...
- 剑指offer【09】- 跳台阶
题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 对于本题,前提只有 一次 1阶或者2阶的跳法. a.如果两种跳法,1阶或者 ...
- Reservoir Computing论文学习
目录 背景: RC优势: 储备池计算主要理论组成: ESNS数学模型 结构表示 状态方程和输出方程 计算过程 储备池的优化 GA:使用进化算法对参数进行优化: 基于随机梯度下降法的储备池参数优化 参考 ...
- pip换源源
介绍 """ 1.采用国内源,加速下载模块的速度 2.常用pip源: -- 豆瓣:https://pypi.douban.com/simple -- 阿里:https:/ ...
- 2019ICPC 上海网络赛 L. Digit sum(二维树状数组+区间求和)
https://nanti.jisuanke.com/t/41422 题目大意: 给出n和b,求1到n,各数在b进制下各位数之和的总和. 直接暴力模拟,TLE.. 没想到是要打表...还是太菜了. # ...
- docker安装(centos-7)
centos7安装docker:Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker .通过 uname -r 命令 ...
- CentOS 7 准备 Superset 环境
安装 anaconda 和 superset 下载 anaconda 软件: https://repo.anaconda.com/archive/Anaconda3-2019.10-Linux-x86 ...