环境
[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/_/mariadbpython
基于ubuntu:trustymysql
### 搜索镜像 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
配置文件路径:linux
/etc/mysql/my.cnfgit
/etc/mysql/conf.d/*.cnfgithub
#### 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实例的配置。请注意,若是使用已包含数据库的数据目录启动容器,则如下任何变量都不会产生任何影响:任何预先存在的数据库在容器启动时始终保持不变。sql
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
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