使用容器 Docker 创建开发环境

栏目: 数据库 · 发布时间: 6年前

内容简介:Docker 容器学习笔记系列:Docker 容器学习笔记系列:个人在开发时能方便快捷的搭建对应的测试环境,比如搭建一个 Redis 数据库、MongoDB 数据库、Elasticsearch 服务。这样就不用拿公共的基础设施做测试了,避免损坏数据、破坏了线上环境。

Docker 容器学习笔记系列:

Docker 容器学习笔记系列:

个人在开发时能方便快捷的搭建对应的测试环境,比如搭建一个 Redis 数据库、 MongoDB 数据库、Elasticsearch 服务。这样就不用拿公共的基础设施做测试了,避免损坏数据、破坏了线上环境。

本文就介绍如何利用容器 Docker 来快速搭建开发测试环境。

MySQL

简单创建

docker run -d \
--name mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7

参数说明:

  • -d :以后台方式运行
  • --name :将运行的容器命名为 mysql
  • -p :端口映射, host_ip:container_ip ,将主机的 3306 端口映射为 容器内部的 3306 端口,数据库连接时,是连接的你的 host_ip ,这二者的顺序不要搞混
  • -e :设置环境变量,指定 root 账号的密码为 123456

上面这种方式运行后,我们将容器中的 mysql 数据和配置文件拷贝到宿主机上。(获取原始配置文件)。

因为没有将宿主机和容器相关目录挂载,这样会导致容器如果被删除,数据会丢失。

# 创建好目录,不然会报错
mkdir -p /dada/docker_local/mysql

# 将容器中的 mysql 配置文件复制到宿主机中指定路径下,路径你可以根据需要,自行修改
docker cp mysql:/etc/mysql/mysql.conf.d/mysqld.cnf /data/docker_local/mysql/config

# 将容器中的 mysql 存储目录复制到宿主机中
docker cp mysql:/var/lib/mysql/ /data/docker_local/mysql/data

这里放一份默认的配置文件 mysqld.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

完成上面的操作之后,将已经运行的容器删除:

docker rm mysql

正式创建

接下来正式运行 MySQL 容器:

docker run -d \
--name mysql \
-p 3306:3306 \
-v /data/docker_local/mysql/config/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \
-v /data/docker_local/mysql/data/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7
  • -v 将宿主机中的文件挂载到将容器中,容器中产生的数据会持久化下来,语法: -v [host-src:]container-dest[:<options>]

其实,如果你一开始就有了默认的配置文件,那么,就可以跳过之前的步骤,直接运行正式的创建 MySQL 容器的命令。

MongoDB

创建容器

# 创建持久化目录
mkdir -p /data/docker_local/mongo/configdb
mkdir -p /data/docker_local/mongo/data/db

docker run -d \
--name mongo \
-v /data/docker_local/mongo/configdb:/data/configdb \
-v /data/docker_local/mongo/data/db:/data/db \
-p 27017:27017 \
mongo:4 \
--auth

启动参数含义在 MySQL 启动时已经见过了,除了 auth

  • --auth :开启权限验证模式。默认情况下,mongo 数据库没有添加认证约束,为了增强数据库的安全性,我们需要对数据库添加授权认证

添加管理员账号

  • 进入容器
    docker exec -it mongo mongo admin
    

进入容器 mongo ,运行命令 mongo admin ,实现了:

  • 进入 mongo 命令行
  • 切换为 admin 数据库

创建一个拥有最高权限的 root 账号:

db.createUser({ user: 'admin', pwd: '123456', roles: [ { role: "root", db: "admin" } ] });

role 角色参数:

Read
readWrite
dbAdmin
userAdmin
clusterAdmin
readAnyDatabase
readWriteAnyDatabase
userAdminAnyDatabase
dbAdminAnyDatabase
root

创建访问指定数据库的用户

管理员已经创建成功后,我们需要重新连接 mongo 数据库,用管理员进行登录,并为目标数据库创建目标用户

# 进入容器,并切换到 admin 数据库
docker exec -it mongo mongo admin
# 授权 admin
db.auth("admin", "123456");
# 创建访问指定数据库的用户
use beta;
db.createUser({ user: 'test', pwd:'test', roles: [ {role:"readWrite",db:"beta"}]});
db.auth("test","test");
# 尝试插入一条数据
use beta
db.test.insertOne({name:"michael",age:"28"})
# 搜索 test collection 全部记录
db.test.find()

test 用户可以对(也只能对) beta 库进行操作

补充:

  • 查看容器运行日志: docker logs mysql

docker-compose

docker-compse 俗称 Docker 三剑客,这里试试用它来同时启动 MySQL、MongoDB 吧:

version: "2"
services:
    mongodb:
        image: mongo:4
        container_name: mongodb # 容器名
        ports:
            - "27017:27017"
        volumes:
            - "/data/docker_local/mongo/configdb:/data/configdb"
            - "/data/docker_local/mongo/data/db:/data/db"
        command: --auth # 开启授权验证
    mysql:
        image: mysql:5.7
        container_name: mysqldb # 容器名
        ports:
            - "3306:3306"
        command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci #设置utf8字符集
        restart: always
        environment:
          MYSQL_ROOT_PASSWORD: 123456 #root管理员用户密码
          MYSQL_USER: test   #创建test用户
          MYSQL_PASSWORD: test  #设置test用户的密码
        volumes:
            - "/data/docker_local/mysql/config/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf"
            - "/data/docker_local/mysql/data/mysql:/var/lib/mysql"

进入到上面编写的docker-compose.yml文件的目录,运行命令:

# 启动所有服务
docker-compose up -d
# 单启动 mysql
docker-compose up -d mysql
# 暂停 mysql
docker-compose stop mysql
# 删除所有容器和镜像
docker-compose down

参考


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Data Structures and Algorithm Analysis in Java

Data Structures and Algorithm Analysis in Java

Mark A. Weiss / Pearson / 2011-11-18 / GBP 129.99

Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course wa......一起来看看 《Data Structures and Algorithm Analysis in Java》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

MD5 加密
MD5 加密

MD5 加密工具

SHA 加密
SHA 加密

SHA 加密工具