[20年12月]Docker数据库镜像安装(MySQL、Redis、Oracle 12c、MS SQLServer、Postgres、MongoDB)

前言
该文章特别适用于自我学习和小规模使用的个人开发者
文章保证提供保姆级操作步骤,Ctrl+C加Ctrl+V可用
但你最好了解Linux的基础知识和操作,最好懂一点Docker的语法命令
当然,你不知道我也会解释的哈哈哈哈哈哈
更新:2020-09-28[在虚拟机上全流程测试可用]

基于Docker的开发环境

Docker官方安装方式

推荐使用CentOS or Ubuntu

在CentOS7安装

移除系统中可能存在的Docker组件

sudo yum remove docker \
                docker-client \
                docker-client-latest \
                docker-common \
                docker-latest \
                docker-latest-logrotate \
                docker-logrotate \
                docker-engine

安装yum工具

sudo yum install -y yum-utils

添加Docker官方仓库

sudo yum-config-manager --add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

安装Docker组件和服务

sudo yum install docker-ce docker-ce-cli containerd.io

启动Docker服务

sudo systemctl start docker

开机自启Docker服务

sudo systemctl enable docker

!!!卸载Docker

sudo yum remove docker-ce docker-ce-cli containerd.io

安装前环境准备及说明

以下按照顺序连续执行命令即可

创建映射目录环境

目录可自行更改
如有变动,请自行更改以下容器中使用的目录结构

sudo mkdir /ls

sudo chmod 777 /ls

代理镜像加速

国内镜像下载过慢,推荐在阿里云>容器服务中申请镜像加速地址

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": ["https://1hz07lr9.mirror.aliyuncs.com"]
}
EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

设置容器网络环境

为了方便容器互联,使用Docker网桥网络模式

docker network create ls_net

Docker最基本的常用命令

这些是最基本、最常用的Docker命令及参数,你应该熟练使用

  • docker ps:查看运行中的容器
  • docker ps -a:查看所有的容器
  • docker start [容器名称或id]:启动容器
  • docker restart [容器名称或id]:重启容器
  • docekr stop [容器名称或id]:优雅地停止容器
  • docker kill [容器名称或id]:强制停止容器
  • docker exec -it [容器名称或id] bash:进入某个容器内部
  • docker images:查看所有已经下载的容器镜像
  • docker rm [容器名称或id]:删除容器
  • docker rmi [容器镜像]:删除容器镜像
  • docker inspect [容器/容器镜像/网络模式]:查看目标(容器/容器镜像/网络模式)详细信息
  • docker logs [容器名称或id]:查看容器运行的日志

在Docker安装开发常用镜像

MySQL

MySQL8.0+

拉取最新镜像

docker pull mysql

创建MySQL的挂载目录

sudo mkdir -p /ls/mysql/{data,conf,mysql-files}

创建MySQL配置文件

touch /ls/mysql/conf/my.cnf

创建容器

注意修改[MYSQL_ROOT_PASSWORD]

docker run -p 3306:3306 --name mysql \
-v /ls/mysql/data:/var/lib/mysql \
-v /ls/mysql/conf:/etc/mysql \
-v /ls/mysql/mysql-files:/var/lib/mysql-files \
--network ls_net --network-alias mysql \
-e MYSQL_ROOT_PASSWORD=YOURPASSWORD \
-d --restart always mysql

Docker运行容器时常用参数说明

  • -p 3306:3306:ip及端口映射 [宿主机ip地址及端口号]:[容器端口号]
  • -name:容器名称,可用于替代容器ID,方便查找定位
  • -v:容器目录映射挂载至宿主机
  • –network:使用的网络模式
  • –network-alias:在网络模式中使用的别名
  • -d:容器中服务以守护态运行
  • –restart always:Docker启动时,容器可自我运行
  • -e:MySQL容器的自定义参数

设置MySQL外部可以访问

# 连接容器bash
docker exec -it mysql bash

# -*-*-*-* mysql容器内 *-*-*-*-*
mysql -uroot -p
use mysql;
GRANT ALL ON *.* TO 'root'@'%';
# 自行修改 YOURPASSWORD
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'YOURPASSWORD';
flush privileges;

# 退出mysql
exit

# 按 ctrl+P 后 按 ctrl+Q 退出容器至宿主机

# 重启mysql容器
docker restart mysql

MySQL5.7+

仅介绍说明5.7挂载目录和部署镜像差异

其他操作步骤同上

拉取最新镜像

docker pull mysql:5.7

创建MySQL的挂载目录

sudo mkdir -p /ls/mysql5.7/{data,conf,log}

创建容器

docker run -p 3307:3306 --name mysql5.7 \
-v /ls/mysql5.7/log:/var/log/mysql \
-v /ls/mysql5.7/data:/var/lib/mysql \
-v /ls/mysql5.7/conf:/etc/mysql \
--network ls_net --network-alias mysql5.7 \
-e MYSQL_ROOT_PASSWORD=YOURPASSWORD \
-d --restart always mysql:5.7

Redis

拉取镜像

docker pull redis

创建Redis的挂载目录

mkdir -p /ls/redis/{data,conf}

创建并编辑Redis配置文件

vim /ls/redis/conf/redis.conf

# -*-*-*-* redis.conf *-*-*-*-*
# 开启持久化(将内存中的数据保存在磁盘上)
appendonly yes
# 设置访问密码
requirepass "YOURPASSWORD"

创建容器

docker run -p 6379:6379 --name redis --restart always \
-v /ls/redis/data:/data \
-v /ls/redis/conf/redis.conf:/etc/redis/redis.conf \
--network ls_net --network-alias reids \
-d redis redis-server /etc/redis/redis.conf

Oracle

拉取镜像

docker pull store/oracle/database-enterprise:12.2.0.1

创建Oracle 12c挂载目录

sudo mkdir -p /ls/oracle/data
chown -R 54321:54321 /ls/oracle/data

创建容器

docker run -d --name oracle -p 1521:1521 \
--network ls_net --network-alias oracle \
-e DB_SID=orcl --restart always \
-v /ls/oracle/data:/ORCL store/oracle/database-enterprise:12.2.0.1

修改sys密码并创建新用户

# 若刚执行创建容器命令,需要等候几分钟待容器创建完成
docker exec -it oracle bash -c "source /home/oracle/.bashrc; sqlplus /nolog"

connect / as sysdba;
# sys密码为Oradoc_bd1

# 修改系统用户密码
ALTER USER SYSTEM IDENTIFIED BY "123456";


# 创建新用户 用户名lostsakura可以替换
CREATE USER C##lostsakura IDENTIFIED BY "YOURPASSWORD";
# 为新用户赋权
GRANT CREATE SESSION TO C##lostsakura;
GRANT CREATE TABLE TO C##lostsakura;
GRANT CREATE TABLESPACE TO C##lostsakura;
GRANT CREATE VIEW TO C##lostsakura;

MSSQL

拉取镜像

docker pull mcr.microsoft.com/mssql/server:2019-latest

创建容器

docker run --name mssql --restart always -d \
-p 1433:1433 --network ls_net --network-alias mssql \
-e "ACCEPT_EULA=Y" -e "SA_PASSWORD=YOURSTRONGPASSWORD" \
mcr.microsoft.com/mssql/server:2019-latest

Postgre

拉取镜像

docker pull postgres

创建容器

# 用户名默认为 postgres
docker run -d -p 5432:5432 --name postgres \
-e POSTGRES_PASSWORD=YOURPASSWORD \
--network ls_net --network-alias postgres \
--restart always postgres

MongoDB

拉取镜像

docker pull mongo

创建容器

docker run --name mongo -p 27017:27017 \
--network ls_net --network-alias mongo \
-itd --restart always mongo --auth

配置用户信息

docker exec -it mongo mongo admin

# 创建admin用户
db.createUser({ user:'admin',pwd:'YOURPASSWORD',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});

其他实用容器,持续更新中…

你可能感兴趣的:(Docker实用技巧,docker,mysql,redis,oracle,mssql)