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+对外映射端口。。

猜你喜欢

转载自www.cnblogs.com/a393060727/p/13163226.html