如何在docker上面安装常用的容器环境

本文主要记录了如何在docker上面安装最长的容器环境,包括redis、mongodb、es以及mysql

安装redis

1. 从docker hub上(阿里云加速器)拉取redis镜像到本地标签为6.0.8

docker pull redis:6.0.8

2. 基础命令操作

2.1 启动容器并访问

# 启动redis容器
docker run -d -p 6379:6379 redis:6.0.8

# 进入redis容器
docker exec -it c14ecf2a6246 /bin/bash

# 使用客户端命令访问容器
redis-cli

2.2 停止容器并删除

# 查看容器ID
docker ps

# 停止容器
docker stop c14ecf2a6246

# 删除容器
docker rm c14ecf2a6246

3. 指定宿主机配置文件和容器卷启动容器

3.1 创建宿主机的redis容器配置文件和容器卷存储文件夹

# 配置文件放在这里
mkdir -p /opt/module/docker/redis/conf

# 数据卷放在这里
mkdir -p /opt/module/docker/redis/datas

3.2 上传默认redis配置文件到/opt/module/docker/redis/conf下面
默认redis配置文件下载地址:下载

3.3 修改redis配置文件

3.4 启动容器

docker run -p 6379:6379 --name redis6 --privileged=true -v /opt/module/docker/redis/conf/redis.conf:/etc/redis/redis.conf -v /opt/module/docker/redis/data:/data -d redis:6.0.8 redis-server /etc/redis/redis.conf
  • Docker挂载主机目录Docker访问出现cannot open directory : Permission denied
  • 解决办法:在挂载目录后多加一个-privileged=true参数即可

安装mongodb

拉取镜像

docker pull mongo:latest

创建宿主机容器卷映射

  • 创建映射配置文件夹
mkdir -p /opt/module/docker/mongodb/conf

在上方文件下面vim mongo.conf输入一下内容

systemLog:
  destination: file
  path: /var/log/mongodb/mongod.log
  logAppend: true
storage:
  dbPath: /data/db
net:
  port: 27037
  bindIp: 0.0.0.0
#security:
  #authorization: enabled

注意:这里的path和dbPath都是指的容器下面的路径

  • 创建mongodb的数据存储位置
mkdir -p /opt/module/docker/mongodb/data/log

启动容器

  • 无密码创建容器
docker run -itd --name mongo -p 27017:27017  -v /opt/module/docker/mongdb/data:/data/db  -v /opt/module/docker/mongdb/conf/mongo.conf:/data/configdb/mongo.conf -v /opt/module/docker/mongdb/data/log:/data/log mongo
  • 设置密码,注意需要在配置文件打开
docker run -d \
--name mongodb \
-p 27017:27017 \
-v /opt/module/docker/mongdb/data:/data/db \
-v /opt/module/docker/mongdb/conf/mongo.conf:/data/configdb/mongo.conf \
-v /opt/module/docker/mongdb/data/log:/data/log \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=admin \
--privileged=true \
--restart always \
mongo

测试

  • 下载studio 3t连接测试

docker安装elasticSearch

1 拉取ES镜像

docker pull elasticsearch:7.16.1

2 创建要挂载的文件与配置信息

mkdir -p /opt/module/docker/elasticsearch/conf
mkdir -p /opt/module/docker/elasticsearch/data
mkdir -p /opt/module/docker/elasticsearch/plugins

3 启动容器

  • 不配置容器卷启动
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-d elasticsearch:7.16.1
  • 测试结果

  • 配置容器卷启动

docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
# 配置启动参数,防止ES占用内存过大,大概1GB
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-v /opt/module/docker/elasticsearch/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /opt/module/docker/elasticsearch/data:/usr/share/elasticsearch/data \
-v /opt/module/docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.16.1

4 测试

  • 测试结果

docker安装arm版本mysql

1. 拉取镜像

由于这里需要安装的mysql5.7版本,但是机器是arm架构的,docker下面的官方mysql只有8.0以上版本才适配了arm架构。
因此,这里安装其与mysql5.7对应的mariaDB10.2。
mariaDB和mysql版本对比关系参考: https://www.cnblogs.com/yuwentao/p/15598047.html

docker pull mariadb:10.2

2. 简单版

  • 1)使用mysql镜像
docker run -p 3306:3306 --name mariadb --env MARIADB_ROOT_PASSWORD=000000  -d mariadb:10.2
  • 2)进入容器实例

docker exec -it mariadb /bin/bash
  • 3)测试建库建表
mysql -u root -p
# 创建测试数据库
create database testDB;
# 切换数据库
use testDB;
# 创建数据表
create table test(id int, name varchar(20));
# 插入表数据
insert into test value(1,"shuisheng");
# 查询表信息
select * from test;
  • 4)测试工具连接

  • 5)小结问题

    • docker上默认字符集编码存在隐患,导致插入中文异常;
      • 通过show variables like 'character%'查看编码
    • 容器实例和数据绑定,导致容器实例删除,数据也就消失了;

3. 实战版

  • 1)新建my.cnf配置文件
  • /opt/module/docker/mysql下面创建confdatalog三个容器映射文件夹
mkdir -p /opt/module/docker/mysql/conf
mkdir -p /opt/module/docker/mysql/data
mkdir -p /opt/module/docker/mysql/log`
  • conf目录下面创建my.conf配置文件,并将以下内容配置在内
[client]
default_character_set=utf8
[mysqld]
collation_server=utf8_general_ci
character_set_server=utf8
  • 2)使用容器卷方式创建mysql实例
docker run -p 3306:3306 --privileged=true -v /opt/module/docker/mysql/log:/var/log/mysql -v /opt/module/docker/mysql/data:/var/lib/mysql -v /opt/module/docker/mysql/conf:/etc/mysql/conf.d --name mariadb -e MARIADB_ROOT_PASSWORD=000000 -d mariadb:10.2
  • 3)测试编码

docker exec -it mariadb /bin/bash
mysql -u root -p
show variables like 'character%';
  • 4)测试数据
    • 先在连接mysql容器,并建库建表;
    • 然后删除实例,重新连接测试数据是否存在;
posted @ 2022-09-15 21:19  車轱辘  阅读(403)  评论(0编辑  收藏  举报