背景
你是否有过这样的困惑?
常常需要本地电脑安装例如Mysql,Redis,RocketMQ,ES,Zookeeper, Nginx,Nacos 等等软件,耗时又费力。
- 每当更换电脑,或者重装系统的时候。
- 每当工作中,需要做些调优或者测试的时候,而这些软件服务一般都是运维或者DBA搭建的,自己甚至没有权限登录到服务器机器上查看,苦恼。
- 每当想学习,却被搭建基础环境折腾,无情的浪费时间。
所以,为了节约时间,我总结了用本地常用软件docker化,实现一键启动。是不是很香?
目标
- 各软件docker服务通过固定IP访问,不能每次重启docker服务IP都变化。
- 本机通过IP直接通信docker容器,而不是通过127.0.0.1 + 端口映射的方式。
- 支持多个服务一键部署,也支持单个服务一键部署。
实现步骤
-
创建 桥取名 app-networkdocker network create –driver bridge –subnet=172.30.1.0/24 –gateway=172.30.1.1 –opt “com.docker.network.bridge.name”=“app-network” app-network 配置docker服务,都桥接到同一 桥app-network上
-
以mysql为例(其它服务类似)version: ‘3.5’ services: db: image: hub.c.163.com/library/mysql:5.7 restart: always container_name: “mysql_5_7” restart: always ports: – 3306:3306 environment: TZ: Asia/Shanghai MYSQL_ROOT_PASSWORD: root #command: volumes: – ./conf.d:/etc/mysql/mysql.conf.d – ./data:/var/lib/mysql networks: default: ipv4_address: 172.30.1.2 networks: default: external: name: app-network 其中: MYSQL_ROOT_PASSWORD 为root用户登录密码,指定IP: 172.30.1.2
- 编写docker-compose.yml文件
编写启动脚本 start.sh#!/usr/bin/env bash # 创建目录 mkdir -p ./conf.d mkdir -p ./data # 设置目录权限 chmod -R 777 ./conf.d chmod -R 777 ./data # 下载并启动容器,且为 后台 自动启动 docker-compose up -d # 显示 mysql 容器 docker ps |grep mysql_5_7
启动mysqltanyawendeMacBook-Pro:mysql bytearch$ sh ./start.sh mysql_5_7 is up–to-date 1be6fba30c7c hub.c.163.com/library/mysql:5.7 “docker-entrypoint.s…” 7 hours ago Up 7 hours 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp mysql_5_7
至此,mysql服务启动成功,一切很顺利,但是,宿主机(MAC电脑)ping不通容器tanyawendeMacBook-Pro:mysql bytearch$ ping 172.30.1.2 PING 172.30.1.2 (172.30.1.2): 56 data bytes Request timeout for icmp_seq 0 Request timeout for icmp_seq 1 Request timeout for icmp_seq 2 Request timeout for icmp_seq 3 Request timeout for icmp_seq 4 Request timeout for icmp_seq 5 Request timeout for icmp_seq 6 Request timeout for icmp_seq 7 Request timeout for icmp_seq 8 Request timeout for icmp_seq 9
尝试试了下阿里云CentOS系统,是可以ping通的。
[root@VM_0_14_centos ~]# ping 172.30.1.2 PING 172.30.1.2 (172.30.1.2) 56(84) bytes of data. 64 bytes from 172.30.1.2: icmp_seq=1 ttl=64 time=0.028 ms 64 bytes from 172.30.1.2声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!