Docker系列之实战:3.安装MariaDB

环境

[[email protected] ~]# cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)

[[email protected] ~]# 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

原文地址:https://www.cnblogs.com/lijianming180/p/12041310.html

时间: 2024-10-07 06:30:10

Docker系列之实战:3.安装MariaDB的相关文章

Docker系列:入门篇-安装docker

Docker 提供了两个版本:社区版 (CE) 和企业版 (EE). Docker 社区版 (CE) 是开发人员和小型团队开始使用 Docker 并尝试使用基于容器的应用的理想之选,所以这里我们来说一下Docker社区版的安装 操作系统要求 64位 CentOS 这里只说明centos上的安装方法 卸载旧版本 Docker 的早期版本称为 docker 或 docker-engine.如果安装了这些版本,请卸载它们及关联的依赖资源. $ sudo yum remove docker docker

Docker系列-第八篇Docker常用安装

一.总体步骤 1.搜索镜像 2.拉取镜像 3.查看镜像 4.启动镜像 5.停止容器 6.移除容器 二.安装Tomcat 2.1 docker push方式安装tomcat https://hub.docker.com/_/tomcat docker hub上每个镜像怎么使用,都有对应的说明,这个说明对于每个镜像的安装和使用都很有帮助 2.1.1.docker hub上面查找tomcat镜像 2.1.2.从docker hub上拉取tomcat镜像到本地 2.1.3.docker images查看

SCCM 2012 R2实战系列之一:SQL安装

大家好,从今天开始跟大家一起分享自己学习SCCM 2012 R2的一些心得和具体的部署配置,希望能帮到大家.由于SCCM部署的步骤比较复杂,内容也比较多,所以我把SCCM整个部署过程分为以下三个章节: l SQL Server 2012 SP1的安装 l SCCM安装前的准备工作 l SCCM 主站点的部署 1.1 实验拓扑图: 下面是本次部署的一个拓扑图,所有操作系统均使用Windows Server 2012 R2 Datacenter版本 1.2 域环境的准备 微软的很多产品都是基于域环境

SCCM 2012 R2 实战系列(八)—安装SCCM客户端

如果想要管理客户端的话,我们需要在客户端计算机上安装SCCM客户端管理工具,管理工具的安装非常简单,SCCM本身就有部署软件的功能,借助这一功能就可以实现SCCM客户端程序的批量部署 这里要注意的是,我们启用的是SSL加密通信,客户端和服务器的通信是需要证书的,因此我们首先需要在客户端上申请一张证书才可以保证SCCM客户单可以正确安装,当然申请证书这一工作我们也可以通过组策略完成,这里就不讲申请证书的过程了, 直接来看安装SCCM客户端的方法 1.在管理->概述中,点击站点,右键SCCM站点选择

Docker入门与实战系列:热点问题

Docker入门与实战--<Docker ABC>电子书 https://github.com/gudaoxuri/Docker_ABC 11. 热点问题 11.1. 容器如何使用静态IP 默认情况下Docker容器的IP是动态分配的,要使用静态IP时我们会思考一下: 为什么需要静态IP?如果是为了两个容器间通信可以 使用--link 指定-h来指定hostname并指定-dns到宿主机 让容器开放上层服务 如果这样都满足不了您的要求那么可以参考 http://huataihuang.gith

Docker系列一:Docker的介绍和安装

Docker介绍 Docker是指容器化技术,用于支持创建和实验Linux Container.借助Docker,你可以将容器当做重量轻.模块化的虚拟机来使用,同时,你还将获得高度的灵活性,从而实现对容器的高效创建.部署和复制,并能将其从一个环境顺利迁移至另外一个环境. Docker官方网站:http://www.docker.com Github Docker 源码:https://github.com/docker/docker 基础特性: 基于C/S架构应用程序 模块化 层与镜像版本控制

Docker -CentOS 6.5上安装

开始安装daoker之旅: 1. [[email protected] ~]# uname -r 2.6.32-431.el6.x86_64 2. [[email protected] ~]# cat /etc/issue CentOS release 6.5 (Final) Kernel \r on an \m 注意其他的源可能导致你的内核和docker的版本不一致,需要升级内核至3.x. 3.安装 [[email protected] ~]# rpm -ivh http://dl.fedor

centos通过yum安装mariadb(mysql)无法启动服务或者找不到mysql.sock

今天在某云主机(centos7)安装(yum install方式)mariadb(即开源mysql)后,无法启动mariadb,其实是安装不完整,当然启动不了,更不用说输入"mysql -u root"提示Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)了 .没什么技术含量的解决方法开始了. 安装mariadb,先搜索一发: $ sudo yum search mariadb 出现: $ s

云计算Docker全面项目实战(Maven+Jenkins、日志管理ELK、WordPress博客镜像)

2013年,云计算领域从此多了一个名词“Docker”.以轻量著称,更好的去解决应用打包和部署.之前我们一直在构建Iaas,但通过Iaas去实现统一功  能还是相当复杂得,并且维护复杂.将特殊性封装到镜像中实现几乎一致得部署方法,它就是“Docker”,以容器为技术核心,实现了应用的标准化.企业可  以快速生成研发.测试环境,并且可以做到快速部署.实现了从产品研发环境到部署环境的一致化.Docker让研发更加专注于代码的编写,并且以“镜像”作  为交付.极大的缩短了产品的交付周期和实施周期. 课