Docker环境搭建入门

转自:http://www.jeesite.net/forum.php?mod=viewthread&tid=2568


1. jdk与maven安装
项目需要自动打包部署,因此需要配置jdk与maven
安装jdk

  1. yum install java-1.8.0-openjdk.x86_64

安装maven

  1. sudo yum install -y yum-utils
  2. [code]yum-config-manager --add-repo http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo
  3. yum install -y apache-maven


配置maven仓库为阿里云

  1. <mirror>
  2.         <id>nexus-aliyun</id>
  3.         <mirrorOf>central</mirrorOf>
  4.         <name>Nexus aliyun</name>
  5.         <url><a href="http://maven.aliyun.com/nexus/content/groups/public</url>" target="_blank">http://maven.aliyun.com/nexus/content/groups/public</url></a>
  6.     </mirror>


2. docker安装

  1. 1. sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  2. 2. sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  3. 3. sudo yum install docker-ce


配置docker加速器(注册阿里云加速更快)、容器网段、镜像仓库

  1. vi /etc/docker/daemon.json
  1. {
  2.         "bip":"172.18.6.1/24",
  3.         "registry-mirrors":[" <a href="https://kzorq22x.mirror.aliyuncs.com" target="_blank">https://kzorq22x.mirror.aliyuncs.com</a>"],
  4.         "insecure-registries":["192.168.244.10:5000"]
  5. }


配置后重启docker服务:

  1. systemctl daemon-reload
  2. systemctl restart docker


3. docker-compose安装

  1. sudo curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  2. sudo chmod +x /usr/local/bin/docker-compose


4. docker仓库服务

  1. docker pull registry
  2. docker run -d  --name reg -p 5000:5000 registry


测试仓库服务:http://192.168.244.10:5000/v2/_catalog   
5. docker挂载目录约定。

  1. 数据目录:/docker-data
  2. 日志目录:/docker-log


一、 项目环境搭建
1. zk搭建

  1. docker run -d --name zk -p 2181:2181  zookeeper


2. dubbo-admin控制台(非必须)

  1. docker run -d -p 8280:8080 --name dubbo -e dubbo.registry.address=zookeeper://192.168.244.10:2181 -e dubbo.admin.root.password=root chenchuxin/dubbo-admin


3. redis搭建

  1. docker run -d --name redis -p 6379:6379 redis  --requirepass "123456"


4. mysql主从搭建
A. 创建mysql主从库配置目录

  1. mkdir -p /docker-data/mysql/master/conf
  2. mkdir -p /docker-data/mysql/slave/conf


B. 在/docker-data/mysql/master/conf下,创建my.cnf配置文件

  1. [client]
  2. port=3306
  3. default-character-set=utf8
  4. [mysql]
  5. default-character-set=utf8
  6. [mysqld]
  7. character_set_server=utf8
  8. sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
  9. # 配置大小写不敏感
  10. lower_case_table_names=1
  11. ## 同一局域网内注意要唯一
  12. server-id=100  
  13. ## 开启二进制日志功能(关键)
  14. log-bin=mysql-bin


C. 在/docker-data/mysql/slave/conf下,创建my.cnf配置文件

  1. [client]
  2. port=3306
  3. default-character-set=utf8
  4. [mysql]
  5. default-character-set=utf8
  6. [mysqld]
  7. character_set_server=utf8
  8. sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
  9. # 配置大小写不敏感
  10. lower_case_table_names=1
  11. ## 同一局域网内注意要唯一
  12. server-id=101  



D. 使用docker-compose来管理mysql主从库,
在/docker-data/mysql下创建docker-compose.yaml:
vi docker-compose.yaml

  1. version: '3'
  2. services:
  3.   mysql-slave:
  4.     image: mysql:5.7
  5.     depends_on:
  6.       - mysql-master
  7.     links:
  8.       - mysql-master
  9.     volumes:
  10.       - /docker-data/mysql/slave/data:/var/lib/mysql
  11.       - /docker-data/mysql/slave/conf:/etc/mysql
  12.       - /docker-data/mysql/slave/log:/var/log/mysql
  13.     ports:
  14.          - "3308:3306"
  15.     restart: always
  16.     environment:
  17.       MYSQL_ROOT_PASSWORD: root
  18.     container_name: mysql-slave
  19.   mysql-master:
  20.     image: mysql:5.7
  21.     volumes:
  22.       - /docker-data/mysql/master/data:/var/lib/mysql
  23.       - /docker-data/mysql/master/conf:/etc/mysql
  24.       - /docker-data/mysql/master/log:/var/log/mysql
  25.     ports:
  26.          - "3307:3306"
  27.     restart: always
  28.     environment:
  29.       MYSQL_ROOT_PASSWORD: root
  30.     container_name: mysql-master


E. 启动compose来启动mysql

  1. docker-compose up -d


F. 主数据库配置,连接主库并创建数据同步用户

  1. CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
  2. GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

  3. SHOW MASTER STATUS ;




G. 从数据库配置,连接从库配置从库同步连接(指定连接的ip/port/user/passwd以及上图中show master status命令得到的file和position值)

  1. CHANGE MASTER TO MASTER_HOST='192.168.244.10',MASTER_PORT=3307,MASTER_USER='slave',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=609;
  2. #启动同步进程
  3. START SLAVE;
  4. H. 测试结果状态
  5. 主库查询进程:SHOW PROCESSLIST


  6. 从库查询进程:SHOW PROCESSLIST



5. mongodb搭建

  1. docker run -d --name mongo -p 27017:27017 -v /docker-data/mongo:/data/db  mongo


6. fastdfs图片服务
创建fastdfs容器服务,并进入容器内部

  1. docker run --add-host fastdfs.net:192.168.244.10 --name fastdfs --net=host -e TRACKER_ENABLE=1 -e NGINX_PORT=8181 -v /docker-data/fastdfs:/storage/fastdfs -it mypjb/fastdfs


修改mod_fastdfs配置,vi /usr/local/nginx/modules/fastdfs/src/mod_fastdfs.conf


修改nginx配置,vi /usr/local/nginx/conf/nginx.conf


重启nginx服务,

  1. nginx  -s  reload


退出容器(ctrl + Q)
7. rabbitMQ服务

  1. docker run -d --name mq -p 5672:5672 -p 15672:15672 -v /docker-data/rabbitmq:/var/lib/rabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin rabbitmq:3.7.14-management


8. nginx服务
可先放置了配置文件目录到宿主机,方便后续nginx编辑配置
进入/docker-data/nginx/conf.d目录下,添加以下配置文件


vi sso.conf

  1. server {
  2.     listen       80;
  3.     server_name  self.sso.com;
  4.     location /mall-account {
  5.         proxy_pass   <a href="http://192.168.244.10:8180;" target="_blank">http://192.168.244.10:8180;</a>
  6.     }
  7.     location ~ /picture/M00{
  8.               proxy_pass <a href="http://192.168.244.10:8181;" target="_blank">http://192.168.244.10:8181;</a>
  9.          }
  10. }


vi www.conf

  1. server {
  2.     listen       80;
  3.     server_name  <a href="http://www.mall.com" target="_blank">www.mall.com</a> mng.mall.com mall.com;
  4.     if ($http_host ~ "^mall.com[        DISCUZ_CODE_25        ]quot;) {
  5.        rewrite  ^(.*)    <a href="http://www.mall.com" target="_blank">http://www.mall.com</a>$1 permanent;
  6.     }
  7.     location /mall {
  8.         proxy_pass   <a href="http://192.168.244.10:8186;" target="_blank">http://192.168.244.10:8186;</a>
  9.     }
  10.     location /mall-mng {
  11.         proxy_pass   <a href="http://192.168.244.10:8185;" target="_blank">http://192.168.244.10:8185;</a>
  12.     }
  13.     location /picture/M00 {
  14.         proxy_pass   <a href="http://192.168.244.10:8181;" target="_blank">http://192.168.244.10:8181;</a>
  15.     }
  16.     location / {
  17.         if ($http_host ~ "^mng.mall.com[        DISCUZ_CODE_25        ]quot;) {
  18.           rewrite  ^(.*)    /mall-mng permanent;
  19.         }
  20.         rewrite  ^(.*)    /mall permanent;
  21.     } }


创建nginx命令:

  1. docker run  --name nginx -d -p 80:80  
  2.   -v /docker-data/nginx/html:/usr/share/nginx/html
  3.   -v /docker-data/nginx/log:/var/log/nginx/
  4.   -v /docker-data/nginx/conf.d:/etc/nginx/conf.d
  5.   nginx
原文地址:https://www.cnblogs.com/coolSome/p/10937027.html