浅谈工作中常用应用软件本地 docker 化,一键部署它不香吗?

背景

你是否有过这样的困惑?

常常需要本地电脑安装例如Mysql,Redis,RocketMQ,ES,Zookeeper, Nginx,Nacos 等等软件,耗时又费力。

  1. 每当更换电脑,或者重装系统的时候。
  2. 每当工作中,需要做些调优或者测试的时候,而这些软件服务一般都是运维或者DBA搭建的,自己甚至没有权限登录到服务器机器上查看,苦恼。
  3. 每当想学习,却被搭建基础环境折腾,无情的浪费时间。

所以,为了节约时间,我总结了用本地常用软件docker化,实现一键启动。是不是很香?

目标

  1. 各软件docker服务通过固定IP访问,不能每次重启docker服务IP都变化。
  2. 本机通过IP直接通信docker容器,而不是通过127.0.0.1 + 端口映射的方式。
  3. 支持多个服务一键部署,也支持单个服务一键部署。

实现步骤

  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上
  2. 以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
  3. 编写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 upto-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进行处理,非常感谢!

  • 上一篇 2021年7月26日
    下一篇 2021年7月26日

    相关推荐