Linux环境下在docker中配置oracle,mysql数据库并实现数据持久化,gitlab配置

一  CentOs安装docker

Linux安装docker参照https://blog.csdn.net/qq_36892341/article/details/73918672

前置条件:

64-bit 系统

kernel 3.10+

注意:本次操作皆在root用户下进行

1.检查内核版本,返回的值大于等于3.10即可。

  # uname -r

2.确保yum是最新的

  # yum update

3.添加 yum 仓库

tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF

 

4.安装 Docker

  # yum install -y docker-engine

安装成功后,使用docker version命令查看是否安装成功,安装成功后------如下图

5.启动docker

  #systemctl start docker.service

6.验证安装是否成功(有client和service两部分表示docker安装启动都成功了)

使用docker version命令查看

7.设置开机自启动

 # sudo systemctl enable docker

到此为止docker就完全安装好了。

二  docker配置Oracle数据库并实现数据持久化

本次配置的为Oracle 11gr2版本数据库

  • 在docker 中获取oracle镜像信息

# docker search oracle

  • 选定镜像,并pull到系统中,一定要先配置加速,不然超级慢
  • 友情提示(至少作者遇见的情况是这样)
  • 一定要选sath89/oracle-xe-11g 不要选wnameless/oracle-xe-11g
  • 一定要选sath89/oracle-xe-11g 不要选wnameless/oracle-xe-11g
  • 一定要选sath89/oracle-xe-11g 不要选wnameless/oracle-xe-11g
  • 不然无法实现数据持久化

docker pull sath89/oracle-xe-11g

  • 查看已经下载的镜像

$ docker images

  • 列出运行中的容器

[root@VM_0_3_centos ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS 

  • 数据持久化

#启动

[root@VM_0_3_centos ~]# docker run -d -p 49160:22 -p 49161:1521 -v /jie:/u01/app/oracle/ --name xe  sath89/oracle-xe-11g
#参数 -d 后台运行容器,并返回容器ID ; -p 指定端口 , -v 指定数据卷位置

#你只需要明白 -v 命令后面的就ok /jie 指定你当前服务器的文件位置 没有会创建 /u01

/app/oracle指定oracle的映射路径 也就是说 数据库中这个目录下的文件都会在你服务器/jie中存在 反之亦然

#查看运行容器

[root@VM_0_3_centos ~]# docker ps
CONTAINER ID        IMAGE                  COMMAND             CREATED             STATUS              PORTS                                                      NAMES
26a0507505c8        sath89/oracle-xe-11g   "/entrypoint.sh "   20 hours ago        Up 14 seconds       8080/tcp, 0.0.0.0:49160->22/tcp, 0.0.0.0:49161->1521/tcp   xe

#查看本地目录 发现有个jie目录

#创建文件测试

[root@VM_0_3_centos jie]# sudo touch jie.txt

#查看容器内的内容是否新增

[root@VM_0_3_centos jie]# docker exec -it xe /bin/bash

连接Oracle 11g

--使用此镜像创建的oracle用户和密码: 

hostname:localhost

port: 49161

sid: xe

service name: xe

username: system

password: oracle

ps:2019/07/24补充,换了个服务器,发现sath89/oracle-xe-11g镜像没了

网上搜了一下用的registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

#pull镜像
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
#数据持久化:
docker run -d -p 49160:22 -p 49161:1521 -v /jie:/u01/app/oracle/ --name xe  registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

#====数据库默认信息
#hostname: localhost
#port: 1521
#sid: helowin
#username: system
#password: helowin

docker exec -it xe bash
su root # 密码:  helowin
#====vi /etc/profile 并在文件最后添加如下命令
#begin
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLE_HOME/bin:$PATH
#end

source /etc/profile

ln -s $ORACLE_HOME/bin/sqlplus /usr/bin

#====登录oracle数据库 ,修改密码
su oracle ;
sqlplus  
# username: system
# password: helowin
alter user system identified by 123456;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
#退出
#===使用数据库工具 登录oracle
hostname: localhost
#记得开放你云服务的tcp 46161端口
port: 46161
sid: helowin
username: system
password: 123456

 

Gitlab

#搜索镜像
docker search gitlab
#下载镜像
sudo docker pull gitlab/gitlab-ce:latest
#创建docker中的网络
docker network create gitlab_net
使用镜像创建容器,并且使重要数据外部挂载到宿主机
docker run --name='gitlab' -d \
--net=gitlab_net \
--publish 1443:443 --publish 18427:80 \
--restart always \
--volume /root/docker/gitlab/config:/etc/gitlab \
--volume /root/docker/gitlab/logs:/var/log/gitlab \
--volume /root/docker/gitlab/data:/var/opt/gitlab \
--privileged=true \
gitlab/gitlab-ce:latest
# 查看容器是否运行起来
docker ps | grep gitlab
#访问拒绝时修改端口
#编辑文件
vi /root/docker/gitlab/config/gitlab.rb

#找到 unicorn['port'] = 8080 的地方,修改为不会被占用的端口
unicorn['port'] = 8888

#保存
:wq!

#重启容器 
docker restart gitlab

mysql配置

#查找镜像
docker search mysql
#pull镜像
docker pull mysql:8.0.18
#执行前先配置mysql my.cnf文件
docker run \
    -p 3306:3306 \
    -e MYSQL_ROOT_PASSWORD=root\
    -v /mysql/data:/var/lib/mysql:rw \
    -v /mysql/log:/var/log/mysql:rw \
    -v /mysql/config/my.cnf:/etc/mysql/my.cnf:rw \
    -v /etc/localtime:/etc/localtime:ro \
    --name mysql \
    --restart=always \
    -d mysql:8.0.18

mysql8用户创建与授权,认证,密码修改

1.用户的创建与授权

  在MySQL5.7的版本:

  > grant all privileges on *.* to '用户名'@'主机' identified by '密码';

  在MySQL8.0需要分开执行:

  >create user '用户名'@'主机' identified by '密码';

  >grant all privileges on *.* to '用户名'@'主机';

  用以前的一条命令在8.0里面创建用户,会出现sql语法错误
2.认证插件更新

  MySQL5.7默认身份插件是mysql_native_password

  MySQL8.0默认的身份插件是caching_sha2_password

  查看身份认证插件命令:show variables like 'default_authentication_plugin%';
  身份认证插件可以通过以下2中方式改变:
  
  1)系统变量default_authentication_plugin去改变,在my.ini文件的[mysqld]下面设置default_authentication_plugin=mysql_native_password即可

  2)如果希望只是某一个用户通过mysql_native_password的方式认证,可以修改数据库mysql下面的user表的字段,执行以下命令:

  >alter user '用户名'@'主机' identified width mysql_native_password by '密码';
3.密码修改
    >ALTER USER 'root'@'localhost' identified by '123456'; 

    >flush privileges;  刷新

最后我自己的/mysql/config/my.cnf


[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
performance_schema_max_table_instances=400
table_definition_cache=400
table_open_cache=256
performance_schema = off
default_authentication_plugin= mysql_native_password
#skip-grant-tables
# Custom config should go here
!includedir /etc/mysql/conf.d/

 

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值