<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 4931字,需瀏覽 10分鐘

           ·

          2020-09-15 07:27

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


          1. Docker介紹


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


          優(yōu)點:

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

          • 能快速的交付和部署

          • 高效的資源利用

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

          • 簡單的更新管理


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




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


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

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

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



          2. 安裝docker


          2.1. 先決條件

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

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

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

          • 內(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ī)都有哪些鏡像,也可以驗證我們的pull是否執(zhí)行成功


          查看容器運行情況

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


          備注:
          docker ps [OPTIONS]說明:

          • -a :顯示所有的容器,包括未運行的。

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

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

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

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

          • –no-trunc :不截斷輸出。

          • -q :靜默模式,只顯示容器編號。

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


          3.2. 簡單啟動 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:為容器指定一個名稱,此處命名為mysql5.7

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

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

          • -d:后臺運行容器,并返回容器ID;
            內(nèi)部映射的端口改成其他端口時候,需要進(jìn)入docker內(nèi) 把對應(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)建對應(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


          啟動數(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é)


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

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


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

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

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

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

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

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

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

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

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

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



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


          ·end·

          —如果本文有幫助,請分享到朋友圈吧—

          我們一起愉快的玩耍!



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


          瀏覽 59
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩欧美国产视频 | 青草午夜| 影音先锋福利资源91p | 亚洲精品高清无码 | 中文字幕一区二区三区日本在线 |