1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        MySQL在Docker環(huán)境下運(yùn)行基礎(chǔ)

        共 4931字,需瀏覽 10分鐘

         ·

        2020-09-15 07:27

        墨墨導(dǎo)讀:MySQL在Docker環(huán)境下運(yùn)行的基礎(chǔ)操作,本文從Docker介紹、安裝Docker、MySQL安裝部署幾個(gè)方面展開介紹。


        1. Docker介紹


        1.1. docker是一種linux容器技術(shù)。容器有效的將由單個(gè)操作系統(tǒng)掛管理的資源劃分到孤立的組中,以便更好的在組之間平衡有沖突的資源使用需求。每個(gè)容器內(nèi)運(yùn)行一個(gè)應(yīng)用,不同的容器之間相互隔離,容器之間也可以建立通信機(jī)制。容器的創(chuàng)建和停止都十分快速,資源需求遠(yuǎn)遠(yuǎn)低于虛擬機(jī)。


        優(yōu)點(diǎn):

        • 能高效地構(gòu)建應(yīng)用。

        • 能快速的交付和部署

        • 高效的資源利用

        • 輕松的遷移擴(kuò)展

        • 簡(jiǎn)單的更新管理


        1.2. 容器的發(fā)展史:




        1.3. Docker容器的運(yùn)行方式:(三大核心組件)


        • 鏡像(images):類似虛擬機(jī)鏡像

        • 倉庫(Repository):集中存放鏡像的地方。每個(gè)服務(wù)器上可以有多個(gè)倉庫。

        • 容器(containers):鏡像的一個(gè)運(yùn)行實(shí)例,類似linux系統(tǒng)環(huán)境,運(yùn)行和隔離應(yīng)用



        2. 安裝docker


        2.1. 先決條件

        • 必須是64位CPU架構(gòu)的計(jì)算機(jī),Docker目前不支持32位CPU;

        • 運(yùn)行Linux3.8或更高版本內(nèi)核,CentOS的內(nèi)核版本不能低于3.10;

        • 內(nèi)核必須支持一種合適的存儲(chǔ)驅(qū)動(dòng),可以是Device Manager、AUFS、vfs、btrfs、以及默認(rèn)的驅(qū)動(dòng)Device Mapper中的一個(gè);

        • 內(nèi)核必須支持并開啟cgroup和命名空間namespace功能。


        2.2. 檢查前提條件

        • 內(nèi)核
          通過uname命令來檢查內(nèi)核版本信息。

        • 檢查Device Mapper
          ls -l /sys/class/misc/device-mapper


        2.3. 安裝docker


        環(huán)境準(zhǔn)備:
        Kernel 3.10+


        (1)檢查系統(tǒng)的內(nèi)核版本,返回的值大于3.10即可

        [root@ss30 ~]# uname -r3.10.0-1127.el7.x86_64

        (2)使用sudo或root權(quán)限的用戶登入中端

        (3)保證apt-get是最新版本的,執(zhí)行如下命令:

        命令:yum update
        [root@ss30 ~]# yum update


        安裝docker:

        命令:yum -y install docker.io  (apt-get install -y docker.io)


        用此命令安裝的可能不是docker的最新版本,要想安裝docker的最新版本可以使用如下命令:

        命令:curl -s https://get.docker.com | sh


        [root@ss30 redis6.0]# service docker start 或systemctl start docker.service[root@ss30 redis6.0]# ps -ef |grep dockerroot       6966      1  1 19:51 ?        00:00:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sockroot       7102   1862  0 19:51 pts/0    00:00:00 grep --color=auto docker[root@ss30 redis6.0]# docker version


        備注:移除Docker

        yum -y remove docker-engine


        3. MySQL安裝部署


        3.1. 拉去鏡像
        訪問 MySQL 鏡像庫地址:
        https://hub.docker.com/_/mysql?tab=tags


        下載鏡像

        [root@ss30 softwares]# docker pull mysql:5.7.30

        [root@ss30 img]# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEmysql               5.7.30              a4fdfd462add        9 days ago          448MB

        備注:

        docker pull [OPTIONS] NAME [:TAG] ?:此命令的作用是從docker遠(yuǎn)程的倉庫拉取鏡像到本地
        docker images [OPTIONS] [REPOSITORY[:TAG]] ?:此命令是來查看我們本機(jī)都有哪些鏡像,也可以驗(yàn)證我們的pull是否執(zhí)行成功


        查看容器運(yùn)行情況

        [root@ss30 ~]# docker container ls[root@ss30 ~]# docker ps  ##列出容器


        備注:
        docker ps [OPTIONS]說明:

        • -a :顯示所有的容器,包括未運(yùn)行的。

        • -f :根據(jù)條件過濾顯示的內(nèi)容。

        • –format :指定返回值的模板文件。

        • -l :顯示最近創(chuàng)建的容器。

        • -n :列出最近創(chuàng)建的n個(gè)容器。

        • –no-trunc :不截?cái)噍敵觥?/span>

        • -q :靜默模式,只顯示容器編號(hào)。

        • -s :顯示總的文件大小。


        3.2. 簡(jiǎn)單啟動(dòng) mysql


        查看所有container

        [root@ss30 ~]# docker images[root@ss30 ~]# docker run -p 3306:3306 --name mysql5730  -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.30[root@ss30 ~]# docker container ls



        備注:

        • –name:為容器指定一個(gè)名稱,此處命名為mysql5.7

        • -e:配置信息,此處配置mysql的root用戶的登陸密碼

        • -p:端口映射,此處映射 主機(jī)3306端口 到 容器的3306端口

        • -d:后臺(tái)運(yùn)行容器,并返回容器ID;
          內(nèi)部映射的端口改成其他端口時(shí)候,需要進(jìn)入docker內(nèi) 把對(duì)應(yīng)的端口my.cnf進(jìn)行配置


        登錄容器:docker exec -it 容器ID bash

        docker exec -it b2240680eb53   /bin/bash


        3.3. 登錄mysql


        查看所有container

        [root@ss30 openssl-1.1.1g]# docker ps -a[root@ss30 openssl-1.1.1g]# docker start  fd014d8ed34b  ##關(guān)閉使用stop命令[root@ss30 openssl-1.1.1g]# docker ps


        登錄docker之后 登錄數(shù)據(jù)庫:


        進(jìn)入mysql容器

        [root@ss30 ~]# docker exec -it mysql bashroot@fd014d8ed34b:/#root@fd014d8ed34b:/# mysql -uroot -p123456

        3.4. 目錄映射
        主機(jī)上創(chuàng)建對(duì)應(yīng)的映射目錄:

        [root@ss30 mysql]# rm -rf /usr/local/docker/mysql/[root@ss30 docker]# mkdir -p  /usr/local/docker/mysql/conf[root@ss30 docker]# mkdir -p /usr/local/docker/mysql/data[root@ss30 docker]# mkdir -p  /usr/local/docker/mysql/logs

        配置文件my.cnf
        MySQL的默認(rèn)配置中可以找到/etc/mysql/my.cnf,這可能! includedir /etc/mysql/conf.等額外的目錄d或/etc/mysql/mysql.conf.d(https://hub.docker.com/_/mysql/)

        #vim /usr/local/docker/mysql/conf/my.cnf[mysqld]server_id                          = 1303306character_set_server               = utf8mb4collation_server                   = utf8mb4_unicode_ciport                               = 3306transaction_isolation              = READ-COMMITTEDmax_connections                    = 1000datadir                            = /var/lib/mysqlsocket                             = /var/run/mysqld/mysqld.sockpid_file                           = /var/run/mysqld/mysqld.pidlog_error??????????????????????????=?/var/log/mysql/error.log


        # chmod 644  /usr/local/docker/mysql/conf/my.cnf


        啟動(dòng)數(shù)據(jù)庫

        #docker run -p 3306:3306 --name mysql \ -v /usr/local/docker/mysql/conf:/etc/mysql \ -v /usr/local/docker/mysql/logs:/var/log/mysql \ -v /usr/local/docker/mysql/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ -d mysql:5.7.30

        備注:-v:主機(jī)和容器的目錄映射關(guān)系,":"前為主機(jī)目錄,之后為容器目錄


        備注:映射本地目錄之后,但MySQL容器出現(xiàn)故障之后,可通過文件遷移,掛載方式,用原有數(shù)據(jù)搭建新容器,提供服務(wù)。


        3.5. 備份


        mysqldump備份命令:

        [root@ss30 opt]# docker exec 327a1c4866ee sh -c 'exec mysqldump -uroot -p123456 -P3309 --single-transaction --master-data --all-databases' > /opt/all-databases.sql


        4. 總結(jié)


        通過實(shí)踐,在docker中的MySQL部署和運(yùn)維,還是比較簡(jiǎn)單的。實(shí)際測(cè)試性能損耗也在10%,當(dāng)然主要個(gè)人認(rèn)為還是網(wǎng)絡(luò)方面的延遲。IO和CPU 已經(jīng)不再是瓶頸。

        容器方面,更想進(jìn)一步深入的話,需要理解幾個(gè)核心點(diǎn):
        1.Docker的數(shù)據(jù)持久化:目錄的映射 和 volume方式
        2.資源方面的隔離 Namespace 和 CGroup
        3.容器服務(wù)編排:Mesos Swarm Kubernetes
        4.網(wǎng)絡(luò)連接方式的選擇


        1.?人人都能看懂的 6 種限流實(shí)現(xiàn)方案!

        2.?一個(gè)空格引發(fā)的“慘案“

        3.?大型網(wǎng)站架構(gòu)演化發(fā)展歷程

        4.?Java語言“坑爹”排行榜TOP 10

        5. 我是一個(gè)Java類(附帶精彩吐槽)

        6. 看完這篇Redis緩存三大問題,保你能和面試官互扯

        7. 程序員必知的 89 個(gè)操作系統(tǒng)核心概念

        8. 深入理解 MySQL:快速學(xué)會(huì)分析SQL執(zhí)行效率

        9. API 接口設(shè)計(jì)規(guī)范

        10. Spring Boot 面試,一個(gè)問題就干趴下了!



        掃碼二維碼關(guān)注我


        ·end·

        —如果本文有幫助,請(qǐng)分享到朋友圈吧—

        我們一起愉快的玩耍!



        你點(diǎn)的每個(gè)贊,我都認(rèn)真當(dāng)成了喜歡


        瀏覽 59
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            亚洲AV无码免费 | 五月丁香色婷 | 亚洲成人国产 | 日日撸日日色 | 男女 视频免费 | 久久内谢 | 翔田千里中文字幕无码 | 亚洲欧美国产日韩字幕 | 两根黑人粗大噗嗤噗嗤动图 | 国产三级精品三级观看 |