Docker安装常用服务,比如:构建主从Mysql、Redis、Nginx

197 阅读2分钟

作为开发人员如果你不用Docker,我觉得你有点过分了!随着容器技术的迅速发展,不会点Docker都不好意思跟人家说我的身份是假冒伪劣的码农!

确实现在好多公司都在用Docker部署服务,真的方便。而且DevOps这种开发模式越来越盛行​!所以我决定进军一下Docker,其实作为开发人员我觉得也没必要掌握的很精通,会用就行了!也就是几个命令的事!
那就从最简单的安装服务开始吧(怎么搜索镜像、拉取镜像就不写了 So Easy !):​

  1. 进入容器内部:

    sudo docker exec -it dc6c3f09cb9a /bin/bash
    
  2. 退出容器:
    exit

  3. 使用docker构建主从mysql

    1. ​ mysql-master

      docker run -p 3306:3306 --name mysql -v /sqt/docker/mysqldata:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d 1e4405fe1ea9
      
    2. mysql-slave

      docker run -p 3307:3306 --name mysql_slave -v /sqt/docker/mysql_slave_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d 1e4405fe1ea9
      
  4. docker安装redis

    1. 构建容器
    docker run -d --privileged=true -p 6379:6379 -v /sqt/docker/redis/config/redis.conf:/etc/redis/redis.conf -v /sqt/docker/redis/data:/data --name redis docker.io/redis:latest redis-server /etc/redis/redis.conf --appendonly yes --requirepass "123456"
    
    1. 下载redis.conf 配置文件:(redis官网有,网上搜索也有模板)
    下载redis.conf 配置文件:
    bind 127.0.0.1 #注释掉这部分
    protected-mode no #默认yes表示开启保护模式,用来限制redis只能本地访问
    daemonize no  #注释掉这部分
    
    1. 命令注释
    -p 6379:6379 ##端口映射,:前表示主机部分,:后表示容器部分。
    --name redis ##指定容器名称,查看和进行操作都比较方便。
    -v /sqt/docker/redis/data/redis:/data ##将主机中/opt/data/redis目录下的redis挂载到容器的/data
    -v /sqt/docker/redis/config/redis.conf:/etc/redis/redis.conf ##将主机中redis.conf配置文件挂载到容器的/etc/redis/redis.conf文件中
    -d redis 表示后台启动redis
    redis-server /etc/redis/redis.conf 以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录/sqt/docker/redis/config/redis.conf
    --appendonly yes 开启redis 持久化
    
    1. 登入容器内部Redis:
    docker exec -it dc6c3f09cb9a  redis-cli -h localhost -p 6379
    auth 123456
    
  5. docker 安装ngnix

    1. docker run --name nginx -d -p 80:80  -v /home/sqt/docker/nginx/html:/usr/share/nginx/html -v /home/sqt/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf  -v /home/sqt/docker/nginx/logs:/var/log/nginx c7460dfcab50 
      
  6. docker安装mysql迁移数据data时 报错:

    Access denied for user ‘root’@’localhost’ (using password: YES)”
    
    1. 进入容器:

      docker exec -it d2d24bd34fb  bin/bash
      
    2. 在 /usr/local/mysql/conf.d目录下增加文件: my.cnf(如果有该文件则不需要新建)

    3. 在 my.cnf 文件中添加一下内容:(没有 vi 或者 vim 命令 看第 4步)

      [mysqld] 
      skip-grant-tables
      
    4. 可能容器内部没有 vi 或者 vim 命令,使用 echo 命令追加(这是我能想到)。

      echo [mysqld] >> my.cnf
      echo skip-grant-tables >> my.cnf
      
    5. 重启容器。使用idea链接mysql成功!