Linux环境下在docker中配置oracle,mysql数据库并实现数据持久化,gitlab配置
一 CentOs安装dockerLinux安装docker参照https://blog.csdn.net/qq_36892341/article/details/73918672前置条件:64-bit系统kernel 3.10+注意:本次操作皆在root用户下进行1.检查内核版本,返回的值大于等于3.10即可。#uname -r2.确保yum是最新的...
一 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/
更多推荐
所有评论(0)