[运维日记 - 1][Docker] 使用Docker部署服务端基础环境

导航

  • 前言
  • 一、安装Docker
  • 二、使用Docker部署单机MySQL
    • 过程
      • 解释
      • 解释
  • 三、使用Docker部署单机Redis
      • 解释
  • 四、使用Docker部署单机RabbitMQ
      • 解释

前言

前段时间实习的工作安排得比较慢,几乎没什么总结归纳的时间。学校布置的课设也要抓进做了,所以设计模式咕了好久

这段时间,我的云服务器快到期了,趁着双十二在某某云又租了一年的云服务器,但是环境的迁移挺难搞噢

不太了解能不能在某某云上直接迁移服务器环境,又不想重新再在新服务器上把环境搭一次,想到以前摸过的Docker,那就用Docker来部署新服务器的环境吧~

一、安装Docker

我新租的云服务器是CentOS 7,安装过程参考Linux 下的 Docker 安装与使用

二、使用Docker部署单机MySQL

我知道MySQL是不建议用Docker来部署的,但是由于我的数据库中的数据并不是非常重要,而且考虑到以后可能要进行拓展,还是将MySQL通过Docker进行部署了

过程

  1. 使用经典的MySQL5.7,先拉取镜像

    docker pull mysql:5.7
    
  2. 拉取镜像后,运行镜像

    docker run -p 3306:3306 --name my_mysql_name \
     -e MYSQL_ROOT_PASSWORD=myPassword \
     -d mysql:5.7 \
     --character-set-server=utf8mb4 \
     --collation-server=utf8mb4_unicode_ci
    

解释

-p 本机端口号:容器端口号,用来建立端口号映射
–name my_mysql_name,指定容器名
-e MYSQL_ROOT_PASSWORD=myPassword,设置密码
-d mysql:5.7,指定运行的镜像
–character-set-server=utf8mb4
–collation-server=utf8mb4_unicode_ci,设置MySQL的编码

  1. 检查容器是否正确运行,可以看到容器ID,源镜像,启动命令,创建时间,状态,端口映射信息,容器名

    docker container ls
    
  2. 进入Docker本地连接MySQL

    docker exec -it mysql_master_1 bash
    
  3. 中文乱码:在MySQL中,执行

    SET NAMES 'utf8mb4';
    

    相当于

    SET character_set_client = utf8mb4;
    SET character_set_results = utf8mb4;
    SET character_set_connection = utf8mb4;
    

    或更改容器中/etc/mysql/my.cnf的配置

    [mysqld]
    pid-file        = /var/run/mysqld/mysqld.pid
    socket          = /var/run/mysqld/mysqld.sock
    datadir         = /var/lib/mysql
    #log-error      = /var/log/mysql/error.log
    # By default we only accept connections from localhost
    #bind-address   = 127.0.0.1
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    
    [mysqld]
    character-set-server=utf8mb4
    skip-name-resolve
    innodb_flush_log_at_trx_commit=0
    sync_binlog=0
    
    [client]
    default-character-set=utf8mb4
    [mysql]
    default-character-set=utf8mb4
    

    解释

    skip-name-resolve:跳过域名解析

    innodb_flush_log_at_trx_commit=0: 这个选项决定着什么时候把日志信息写入日志文件以及什么时候把这些文件物理地写(术语称为”同步”)到硬盘上。设置值0的意思是每隔一秒写一次日志并进行 同步,这可以减少硬盘写操作次数,但可能造成数据丢失; 设置值1(设置设置)的意思是在每执行完一条COMMIT命令就写一次日志并进行同步,这可以防止数据丢失,但硬盘写操作可能会很频繁; 设置值2是一般折衷的办法,即每执行完一条COMMIT命令写一次日志,每隔一秒进行一次同步

    sync_binlog=0:每经过n次日志写操作就把日志文件写入硬盘一次(对日志信息进行一次同步)。设为1是最安全的做法,但效率最低。docker中默认设置是1,意思是由操作系统来负责二进制日志文件的同步工作

三、使用Docker部署单机Redis

  1. 拉取最新Redis镜像

    docker pull redis
    
  2. 运行

    docker run -itd -p 6379:6379 --name redis_01 redis --requirepass "myPassword"
    

    解释

    –requirepass “myPassword”,设置Redis的密码,如果无此参数,则Redis没有密码

四、使用Docker部署单机RabbitMQ

  1. 拉取RabbitMQ镜像

    docker pull rabbitmq:management
    
  2. 运行

    docker run -d --name rabbitmq -e RABBITMQ_DEFAULT_USER=userName -e RABBITMQ_DEFAULT_PASS=myPassword -p 15672:15672 -p 5672:5672 rabbitmq:management
    

    解释

    -e RABBITMQ_DEFAULT_USER=userName,设置默认用户
    -e RABBITMQ_DEFAULT_PASS=myPassword,设置默认密码
    -p 15672:15672,RabbitMQ的15672端口是可视化操作界面,可通过浏览器通过[服务器ip]:15672访问
    -p 5672:5672,5672端口是RabbitMQ的服务端口

使用Docker容器配置这些服务太方便了,几行命令就搞定,你还在手动配置环境吗?

你可能感兴趣的:(运维日记,docker,mysql,运维,redis,rabbitmq)