docker docker-compose编排服务运行测试mysql
之前学习docker的时候,全部通过mysql原生的脚本运行脚本,太久没动之后脚本可能都忘记了。
就是说不方便操作。换了个人操作之后,还需要交付脚本。而docker有个编排插件docker-compose就是专门干这事情的。百度了下还挺多文章的。
然后依葫芦画瓢来一个,对比。
准备资料:
服务器一台:192.168.89.151
安装 docker、docker-compose
为了让网络都在一个环境中运行,创建私有网络。
创建相应的文件夹用于挂载。
开始。
之前该干什么,还是干什么
1、安装docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose // 授权 chmod +x /usr/local/bin/docker-compose // 重启服务 systemctl restart docker
2、创建私有网络mynetwork:
docker network create --subnet=172.30.0.0/16 mynetwork // 查看网络mynetwork docker network list // 进入网络mynetwork查看 docker network inspect mynetwork
3、创建宿主机文件夹目录
// 数据目录data
// 配置文件目录config
// 日志目录log
mkdir -p /home/soft/mysql/data mkdir -p /home/soft/mysql/config mkdir -p /home/soft/mysql/logs mkdir -p /home/soft/mysql2/data mkdir -p /home/soft/mysql2/config mkdir -p /home/soft/mysql2/logs
// 创建配置文件my.cnf
cd /home/soft/mysql/config vi my.cnf // 增加如下内容 [mysqld] user=mysql character-set-server=utf8 default_authentication_plugin=mysql_native_password default-storage-engine=INNODB sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION max_connections=1500 [client] default-character-set=utf8 [mysql] default-character-set=utf8
4、之前安装mysql的原始docker命令:
docker create \ -e MYSQL_ROOT_PASSWORD=123456 \ -v /home/soft/mysql/config/my.cnf:/etc/mysql/my.cnf \ -v /home/soft/mysql/logs:/logs \ -v /home/soft/mysql/data:/var/lib/mysql \ -p 9205:3306 \ --net=mynetwork \ --ip 172.30.0.3 \ --name mysql1 mysql:5.6.47 启动服务 docker start mysql1 【遇到异常】 iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 【解决】重启docker systemctl restart docker
5、编排服务,安装mysql数据库测试
创建docker-compose-mysql.yml
version: '3' # 使用Docker-Compose版本 services: mysql: image: mysql:5.6.47 # 使用mysql镜像 restart: always container_name: mysql2 # mysql最后的容器名 environment: MYSQL_ROOT_PASSWORD: 123456 # 设置root用户的密码 networks: mynetwork: ipv4_address: 172.30.0.4 # 分配ip地址 volumes: # 将自己顶一个数据和配置文件映射到mysql容器对应的文件 - '/home/soft/mysql/data:/var/lib/mysql' - '/home/soft/mysql/config/my.cnf:/etc/my.cnf' - '/home/soft/mysql/logs:/logs' ports: - '9206:3306' # 将3306端口映射到主机的6606 networks: # 定义网络地址 mynetwork: # 使用自有网络 external: true
最终修改文件名称为:
docker-compose.yml
内容:
version: '3' services: mysql: image: mysql:5.6.47 restart: always container_name: mysql2 environment: MYSQL_ROOT_PASSWORD: 123456 networks: mynetwork: ipv4_address: 172.30.0.4 volumes: - '/home/soft/mysql2/data:/var/lib/mysql' - '/home/soft/mysql2/config/my.cnf:/etc/my.cnf' - '/home/soft/mysql2/logs:/logs' ports: - '9206:3306' networks: mynetwork: external: true
启动,一定要后台启动加上-d 否则,退出当前窗口后,服务就暂停了。
cd /home/soft/mysql2
docker-compose up -d
6、查看服务运行情况。
[root@localhost mysql2]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES fa74af70f4de mysql:5.6.47 "docker-entrypoint.s…" 6 minutes ago Up 6 minutes 0.0.0.0:9206->3306/tcp mysql2 cfd91ace203f mysql:5.6.47 "docker-entrypoint.s…" 23 minutes ago Up 23 minutes 0.0.0.0:9205->3306/tcp mysql1
通过客户端连接数据库。
宿主机IP+对外映射端口。。