使用 mysql docker 镜像 本文按 MySQL 官方指南做了简化,按应用场景讲述了下载,启动,客户端与服务器通讯,发布主机服务等。类似 Redis Docker 也就会用了。 准备 假定你对 mysql 有一定了解 完成了 centos 7 的 docker 安装 首先在 dev.aliyun.com 上找到 mysql 官方镜像,然后查看详情,就有英文使用手册1。 1、下载 mysql 镜像 命令:dockor pull mysql:tag 案例: sudo dockor pull mysql:5.7 sudo dockor images 2、启动 mysql server 和 client 启动 mysql 服务器,命令: sudo docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag 案例: sudo docker run --name mysql1 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7 sudo docker ps 启动 mysql 客户端,命令: docker run -it --link mysql1:mysql --rm mysql sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"' 不得不惊讶于在不知道容器地址等信息的条件下,客户机如何与服务器通讯的。以下是一些 docker run 的知识2。 命令格式: sudo docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...] 一些 OPTIONS: -d 容器在后台运行 -it 容器在前台,且使用控制台的 stdin 和 stdout 作为容器的 stdin 和 stdout –rm 容器在前台,且命令进程退出后,自动清理容器 –name container-name 定义运行容器的名字 -e ENV-NAME=value 定义容器环境变量,会覆盖当前容器的设定 –link container-name:alias 连接容器环境设定 3、容器之间的通讯 --link Container-name:alias 会导致服务容器暴露的环境信息导入当前容器,例如: sudo docker run -it --rm --link mysql1:mysql_alias mysql /bin/bash -c export 输出: declare -x GOSU_VERSION="1.7" declare -x HOME="/root" declare -x HOSTNAME="e407cd8771cc" declare -x MYSQL_ALIAS_ENV_GOSU_VERSION="1.7" declare -x MYSQL_ALIAS_ENV_MYSQL_MAJOR="5.7" declare -x MYSQL_ALIAS_ENV_MYSQL_ROOT_PASSWORD="root" declare -x MYSQL_ALIAS_ENV_MYSQL_VERSION="5.7.16-1debian8" declare -x MYSQL_ALIAS_NAME="/silly_kirch/mysql_alias" declare -x MYSQL_ALIAS_PORT="tcp://172.17.0.2:3306" declare -x MYSQL_ALIAS_PORT_3306_TCP="tcp://172.17.0.2:3306" declare -x MYSQL_ALIAS_PORT_3306_TCP_ADDR="172.17.0.2" declare -x MYSQL_ALIAS_PORT_3306_TCP_PORT="3306" declare -x MYSQL_ALIAS_PORT_3306_TCP_PROTO="tcp" declare -x MYSQL_MAJOR="5.7" declare -x MYSQL_VERSION="5.7.16-1debian8" declare -x OLDPWD declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" declare -x PWD="/" declare -x SHLVL="1" declare -x TERM="xterm" 其实,这时你检查主机的网络设置,多了一个桥接(docker0),它的IP是 127.17.0.1。 主机,与容器在一个桥接的网段,它们之家是可以直接通讯的。 4、其他应用场景 相关 docker run 的 OPTIONS: -p [host-port]:[container-port] 发布容器端口,暴露在主机端口。常用格式:主机端口:容器端口 -v [host-dir]:[container-dir]:[rw|ro] 将主机文件目录挂载入容器目录,实现文件共享。 4.1 容器服务成为主机服务 通过容器端口发布,能访问主机的端口机器都可以获得容器服务,例如: sudo docker run -p 3306:3306 --name mysql2 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7 1 1 这时,主机客户端使用主机 IP 地址和端口也能访问 容器 mysql2 中的服务。 4.2 直接进入容器(后台)执行操作 有时,我们需要管理后台容器,docker exec container-name 最方便 sudo docker exec -it mysql1 /bin/bash mysql -uroot -p 熟悉的客户端就出来了。 4.3 指定 my.ini 和 数据存储 我们需要做集群、修改字符集支持,就需要指定 my.ini 配置文件。 当然,你可以直接用 docker exec 进入,修改 my.ini 直接发布新镜像。 mysql 官方镜像早考虑到你的需要,仅需在 run 命令中加入 -v /my/custom:/etc/mysql/conf.d 其中,/etc/mysql/conf.d 是挂载点, 你可以用 /my/custom 下的 my.ini 配置容器中 mysql。 同样,使用 -v /my/own/datadir:/var/lib/mysql 挂载本地存储。 小结 mysql 容器,简化了 mysql 的安装与部署。特别合适想了解读写分离等技术的人群。 如果你完成了 mysql 配置,可尝试 Redis 配置。。。 【参考】 官方指南。 /mysql/”>https://hub.docker.com//mysql/ ↩ docker run 命令。 http://www.open-open.com/lib/view/open1422492851548.html (责任编辑:IT) |