Docker的安装与使用

一、查看Linux内核与版本

       空的服务器需要查看Linux内核与版本,我这里使用的是centos 7.9。Docker需要运行在Centos 7 上要求系统64位,系统内核版本为3.10以上。

        1、查看系统内核

              uname  -a

        2、查看系统版本

              cat /etc/centos-release

二、基础准备

       1、更新yum

             sudo yum update

       2、如果存在旧版本的docker,可以卸载             

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

       3、安装存储库

             安装存储库         

             sudo yum install -y yum-utils

             由于docker官方国内访问比较慢,可以设置为阿里的镜像源来完成          

sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

三、安装Docker引擎

       1、安装最新版的Docker Engine 和 containerd             

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

       2、列出并排序在你的repo可用的版本。这个离职根据版本号对结果进行排序,从高到低,并被截断。           

             yum list docker-ce --showduplicates | sort -r

      3、通过其完全限定的包名安装特定版本,即包名(docker-ce)加上从第一个冒号(:)开始的版本字符串(第2列) ,直到第一个连字符,中间用连字符(-)分隔。例如,docker-ce-18.09.1。

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

     4、启动Docker 

            sudo systemctl start docker

     5、运行hello-word镜像          

          sudo docker run hello-world

         注:此命令下载测试映像并在容器中运行它。当容器运行时,它打印一条消息并退出。

四、配置镜像和设置全局容器日志大小

       Docker默认拉取官方镜像(https://hub.docker.com)很慢。可以配置国内镜像源。

               a、docker 官方中国区:https://registry.docker-cn.com

               b、网易:http://hub-mirror.c.163.com

               c、中国科学技术大学:https://docker.mirrors.ustc.edu.cn

       1、编辑配置文件 /etc/docker/daemon.json (没有时会自动新建该文件),上面提到的hello-word运行不了,也是因为缺少该文件,导致镜像拉取失败。

              vim /etc/docker/daemon.json   

             

           2、重启docker守护进程               

systemctl daemon-reload
systemctl restart docker

五、安装Compose

        数据持久化,理解为可以通过编写yaml文件实现一键安装数据库且实现目录挂载,这样即使容器挂了,数据也不会丢失。

       1、下载当前Docker Compose稳定版本

             sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

             注意:执行该个命令需要耐心等待,执行完了会自动跳回命令行。

       2、对二进制文件应用可执行权限          

            sudo chmod +x /usr/local/bin/docker-compose

       3、测试安装            

            docker-compose --version

六、安装Portainer

       Portainer就是Docker容器UI页面,不用每次都要进服务器才能对容器进行查看。

       1、创建Portainer Server 用来存储数据库的卷           

             docker volume create portainer_data

       2、下载并安装 Portainer server 容器

docker run -d -p 8000:8000 -p 9443:9443 --name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:2.11.1

           注意:如果因为遗留原因需要打开http 端口 9000,在docker run 命令中添加一下命令: -p 9000:9000 

docker run -d -p 8000:8000 -p 9443:9443 -p 9000:9000 --name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:2.11.1

          已经安装了Portainer 服务器。可以通过docker ps来检查 Portainer server 容器是否启动。

         3、登录Portainer

               浏览器中输入https://服务器ip:9443,可以看到查 Portainer server的初始设置密码创建的用户页面。

           到此,Docker环境就算配置好了。

七、docker-compose安装Mysql,sql server,Oracle数据库

      1、在服务器中任意位置(这里用/usr/local/tools),新建一个Database文件夹,子文件夹为data和yaml。进入yaml文件夹下再新建docker-compose.yaml文件,yaml文件代码如下:

version: '3.1'
services:
  mysql-8:
    image: mysql:8.0.22
    restart: always
    container_name: mysql-8
    environment:
      MYSQL_ROOT_PASSWORD: ****** #自己设置密码
    command:
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
    ports:
      - 3307:3306
    volumes:
      #../data其实就是我们Database文件下的data文件夹,data下面的子文件建可以自己先建好,没有的话也会自动生成,所以没关系,你也可以随意建文件夹,只要这边挂载的时候写对即可,为什么写../相对路径,因为方便迁移到其他机器
      - ../data/mysql/mysql8/data:/var/lib/mysql  
      - ../data/mysql/mysql8/conf:/etc/mysql/conf.d
      - ../data/mysql/mysql8/logs:/logs


  #服务名称
  sqlserver-2019:
    restart: always
    #容器名称
    container_name: sqlserver-2019
    #镜像名称
    image: mcr.microsoft.com/mssql/server:2019-latest
    #端口映射
    ports:
      - 1433:1433
    #挂载
    volumes:
      - ../data/mssql/mssql2019:/var/opt/mssql
    #环境变量
    environment:
      - ACCEPT_EULA=Y
      #SA用户密码长度必须至少为 8 个字符,并包含以下四组中的三组字符:大写字母、小写字母、10 位基数和符号
      - SA_PASSWORD=****** #自己设置密码

  oracle-11:
    hostname: oracle-11
    image: jaspeen/oracle-xe-11g:latest
    restart: always  
    container_name: oracle-11
    expose:
      - 1521
    privileged: true
    environment:
      - TZ=Asia/Shanghai
      - DOCKER_CLIENT_TIMEOUT=120
      - COMPOSE_HTTP_TIMEOUT=120
      - ORACLE_PDB=system   #默认数据库
      - ORACLE_PWD=oracle   #oracle system用户的密码
      - ORACLE_CHARACTERSET=AL32UTF8
    volumes:
      - ../data/oracle/oracle11:/u01/app/oracle
    ports:
      - 1521:1521
View Code

            保存后进入tools文件夹,给Database赋予权限:chmod -R 777 Database ,再回到yaml文件夹执行命令,两种方式:

             a、如果意见安装:docker-compose up -d

             b、如果分容器安装,则加上容器名:

                                           docker-compose up -d mysql-8

                                           docker-compose up -d sqlserver-2019

                                           docker-compose up -d oracle-11

             执行成功后,每个容器会显示done,成功后即可利用Navicat进行链接。

             注意:这里安装的oracle服务名为XE,不是默认的ORCL

八、扩展

       8.1、解决vim安装问题

               进入oracle后想配置一个环境变量,但是由于容器相当于是centos最小化安装,所以不支持vim,这个让我很烦,因为vi实在不方便,所以我打算安装vim,执行 sudo apt install vim却报错了:

           

            【解决方案】:

              1、更新apt                  

                   sudo apt-get update
                   sudo apt-get upgrade

              2、安装vim

                   sudo apt install vim

        8.2、利用Navicat连接Oracle后新建表空间

                  利用sql查询临时表空间存放文件位置                  

                    select name from v$tempfile;

                  上面查出路径后请记住,下面要用:           

create tablespace 表空间名称
datafile '/u01/app/oracle/oradata/XE/Sugonwyydata.dbf' #路径同上个语句查出来的一样,随便编一个dbf文件名即可
size 200m
autoextend on
next 10m;
View Code

                   创建用户并选择表空间                   

create user 用户名

IDENTIFIED BY “密码”

DEFAULT tablespace 表空间名称 ;

        8.3、 授权用户以管理员权限登录                

                  grant dba to 用户名;

                如果想收回管理员权限只想拥有连接,导入,导出权限。              

                  revoke dba from 用户名;

                  grant connect,exp_full_database,imp_full_database to 用户名;

        8.4、添加system用户和新建用户对新建表空间操作的权限          

alter user system quota unlimited on 表空间名称;

grant unlimited tablespace to system;

grant insert any table to system;

grant unlimited tablespace to 新建用户;

       8.5、移除新建用户对标空间的权限

revoke unlimited tablespace from 用户名;

ALTER USER SUGONTEST QUOTA UNLIMITED ON 表空间名称; 

      8.6、利用Portainer上的oracle容器改密码。

              【问题】:用Navicat利用用户名和密码连接oracle,提示密码已过期,但是自己按照提示输入正确的旧密码和设置对应的新密码后无法修改成功提示【ORA-01017:invalid username/password;logon denied】               

                 

             【原因】:由于账号的密码设置了有效期(默认为:180天),可以通过打开Oracle服务器上的sqlplus工具,但是发现突然不知道怎么利用Portainer上的oracle容器改密码。

             【步骤】:

                              1、登录Portainer对应的oracle容器并进入控制台                                                              

                                  

                             2、输入 su - oracle 切换到oracle用户下,再用sqlplus / as sysdba登录oracle系统,这种登录方式使用的是操作系统的验证方式,因此,无需输入用户名和密码即可直接登录进去。

                              

                            利用SELECT * FROM dba_profiles WHERE profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';查看Oracle账号的密码有效期

                               

                       3、修改密码:alter user 用户名称 identified by 密码;
                             比如:alter user tester01 identified by 123456;
                             注意修改密码时不要带特殊字符,如果带特殊字符记得带双引号,单引号不行!

                      4、如果在使用dba角色使用命令修改账号的密码后,使用Navicat登陆该账号如果提示【ORA-28000:the account is locked】(即账号被锁定的提示),则依旧在Oracle服务器上使用sqlplus工具使用dba角色登陆,

                           输入解锁命令解除该指定账号的锁定状态

                         alter user 需要解锁的账号名称 account unlock;

                     5、如果想设置密码永不过期,则利用ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED ;

                     6、如果解锁了账号之后没多久又被锁定了,那么执行alter profile default limit failed_login_attempts unlimited,这样无论输入多少次都不会被锁定,但此时,数据的安全性将降低。

 

 

posted on 2023-10-10 17:25  木乃伊人  阅读(173)  评论(0编辑  收藏  举报

导航