您好,登錄后才能下訂單哦!
本篇內容介紹了“如何使用Docker安裝Redis和Mysql”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
最近準備寫如何實現分布式鎖的文章,實現分布式鎖可以借助數據庫、緩存和Zoopkpeer實現。在實現代碼時就需要安裝以上軟件。于是就想到使用docker來簡化我的安裝,并可以正好學習一下Docker相關知識,本篇文章就介紹下如何使用Docker安裝Mysql/Reids/Zookeeper。
關于docker的安裝教程很多,不同的操作系統也不一樣,這里不再贅述。如果僅是個人研究和學習,在mac上安裝建議大家使用docker for mac安裝,https://store.docker.com/editions/community/docker-ce-desktop-mac
在使用Docker之前,我們先了解下幾個Docker的核心概念
Docker引擎,就是運行在后臺的一個守護進程,在我們啟動它之后,我們就可以通過Docker客戶端發送相關Docker的命令。
Docker鏡像,這個就類似于我們在安裝Windows時的鏡像,只不過windows的鏡像,在以前我們通常存在光盤上或者U盤里,這里的鏡像我們通常會發布到Docker Registry
Docker容器,在獲取到Docker鏡像之后,我們可以運行該鏡像,此時便會啟動一個Docker容器,該容器中運行鏡像中的程序。如果把Docker鏡像理解為一個類的話,那么Docker容器就是一個實例
Docker客戶端,我們安裝完Docker之后,我們打開終端使用docker 相關命令進行操作,這些命令便是Docker客戶端的命令,另外還有一個基于REST API的Docker客戶端,REST API一般用于在開發一些基于Docker運維的系統中使用。
Docker鏡像注冊中心,Docker的官網的注冊中心為http://hub.docker.com。我們也可以自己搭建自己的注冊中心。
以上是Docker的核心概念,下面我們來看如何使用Docker安裝Redis、Zookeeper、Mysql,并在過程中,學習使用Docker Client的一些常用命令
使用以下命令在Docker Hub搜索Redis鏡像
docker search redis
執行以上命令,會搜索出所有帶redis關鍵字的鏡像(為減少篇幅,僅展示部分結果)
yanyanwangdeMacBook-Pro:~ yanyan.wang$ docker search redis NAME DESCRIPTION STARS OFFICIAL AUTOMATED redis Redis is an open source key-value store th... 3788 [OK] bitnami/redis Bitnami Redis Docker Image 47 [OK] torusware/speedus-redis Always updated official Redis docker image... 32 [OK]
其中Name表示鏡像倉庫的名稱,如果不帶/則表示Docker官方倉庫,帶/則表示其他用戶公開的鏡像。OFFICIAL表示是否為官方倉庫,一般我們推薦使用官方的倉庫。
我們使用以下命令拉取,Redis的鏡像
docker pull redis:latest
其中redis:latest表示我們下載NAME為redis的鏡像,latest表示TAG
在執行完以上命令之后,Docker Client會從Docker鏡像注冊中心下載Redis的鏡像,待下載之后,我們查看本地的鏡像
我們使用以下命令查看,本地的redis鏡像
docker images
執行以上命令,就會顯示本地的所有鏡像
REPOSITORY TAG IMAGE ID CREATED SIZE redis latest a858478874d1 10 days ago 184 MB
其中IMAGE ID表示鏡像ID,具有唯一性
使用以下命令,使用Reids鏡像,創建并啟動Redis容器
docker run -p 6379:6379 -v $PWD/data:/data -d redis:latest redis-server --appendonly yes
執行以上命令,我們就使用redis:latest鏡像創建并啟動了一個Redis容器,其中
-p 6379:6379:將容器的6379端口映射成主機的6379端口
-v $PWD/data:/data :將主機中當前目錄下的data掛載到容器的/data
redis-server --appendonly yes : 在容器執行redis-server啟動命令,并打開redis持久化配置
使用以下命令查看所有容器
docker ps
執行以上命令,輸出如下
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 07f0edc95fb3 redis:latest "docker-entrypoint..." 2 minutes ago Up 2 minutes 0.0.0.0:6379->6379/tcp quirky_davinci
其中Status表示運行狀態,Up表示運行中,PORTS表示容器需要對外暴露的端口號
我們使用Redis鏡像使用redis-cli客戶端,連接到redis容器
docker run -it redis:latest redis-cli -h 192.168.0.101
執行以上命令,我們就連接到redis容器,接下來我們就可以使用redis命令進行操作
192.168.0.101:6379> set "testKey" "test" OK 192.168.0.101:6379> get "testKey" "test" 192.168.0.101:6379>
至此,我們已經完成了Reids的安裝。
接下來我們安裝zookeeper,我們使用和redis相同的方法。直接使用最少的步驟安裝,不再做過多解釋
docker search zookeeper
查找結果如下:
NAME DESCRIPTION STARS OFFICIAL AUTOMATED jplock/zookeeper Builds a docker image for Zookeeper versio... 160 [OK] zookeeper Apache ZooKeeper is an open-source server ... 157 [OK] mesoscloud/zookeeper ZooKeeper 70 [OK] digitalwonderland/zookeeper Latest Zookeeper - clusterable 14 [OK] springxd/zookeeper A Docker image that can run a ZooKeeper se... 6 [OK]
docker pull zookeeper
docker run -p 2181:2181 -v $PWD/data:/data -d zookeeper:latest
使用zookeeprt鏡像創建并啟動容器,我們把容器的2181映射到機器的2181上,同樣把當前目錄的data 掛載到容器的/data
yanyanwangdeMacBook-Pro:zookeeper yanyan.wang$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 44b43e486817 zookeeper:latest "/docker-entrypoin..." 24 minutes ago Up 24 minutes 2888/tcp, 0.0.0.0:2181->2181/tcp, 3888/tcp mystifying_wing 2358c79358d6 redis:latest "docker-entrypoint..." About an hour ago Up About an hour 0.0.0.0:6379->6379/tcp fervent_lamarr
docker exec -it 44b43e486817 /bin/bash
進入容器之后,ls查看操作目錄,可以查看下有哪些目錄
bash-4.3# ls LICENSE.txt bin dist-maven lib zookeeper-3.4.10.jar.asc NOTICE.txt build.xml docs recipes zookeeper-3.4.10.jar.md5 README.txt conf ivy.xml src zookeeper-3.4.10.jar.sha1 README_packaging.txt contrib ivysettings.xml zookeeper-3.4.10.jar
接下來我們安裝Mysql,和以上直接從docker注冊中心拉取鏡像不同。我們首先構建自己的mysql鏡像,然后在創建并啟動容器
我們可以使用Dockerfile來快速的構建。Dockerfile實際上就是一種編寫Docker鏡像的腳本,Dockerfile腳本有固定的格式,通過這些固定的格式,我們可以編寫不同需求的Docker鏡像。以下是構建Mysql鏡像的腳本以及腳本的含義
## 設置基礎鏡像 FROM mysql:latest ## 設置維護者信息 MAINTAINER yywang <wangyan9110@163.com> ## 設置描述信息 LABEL Descripttion="This image is build for MAC to use mysql" Vendor="GitHub" Version="latest" ## 設置鏡像制作過程中,需要執行的命令 RUN apt-get update RUN apt-get -y install vim RUN usermod -u 1000 mysql RUN mkdir -p /var/run/mysqld RUN chmod -R 777 /var/run/mysqld
其中FROM 表示設置基礎鏡像指令,該指令有固定的格式,即“倉庫名:標簽名”,RUN 表示在鏡像構建過程中,需要執行的命令。
把以上腳本保存在一個叫Dockerfile的文件下,這時mysql鏡像的Dockfile的腳本就完成了。
在Dockerfile文件的同一目錄下輸入如下命令:
docker build -t yywang/mysql-osx:latest .
其中-t 指定了鏡像的名稱,. 這一點表示讀取當前目錄下的Dockerfile文件
在執行完成以上命令后,我們查看當前鏡像
yanyanwangdeMacBook-Pro:zookeeper yanyan.wang$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE yywang/mysql-osx latest 38c6579b6f70 4 minutes ago 446 MB
可以看出yywang/mysql-osx就是我們剛剛構建的鏡像
接下來我們就創建并啟動mysql容器
docker run -d -h mysql \ -v $PWD/mysql:/var/lib/mysql \ -p 0.0.0.0:3306:3306 --name mysql \ -e MYSQL_ROOT_PASSWORD=123456 yywang/mysql-osx
其中-e 表示設置mysql的root賬戶密碼為123456
我們使用Mysql鏡像的mysql客戶端,連接到mysql容器
docker run -it yywang/mysql-osx mysql -h292.168.0.101 -uroot -p123456
登錄完成后,我們就可以使用mysql的命令操作mysql
mysql> select GET_LOCK("testKey",0); +-----------------------+ | GET_LOCK("testKey",0) | +-----------------------+ | 1 | +-----------------------+ 1 row in set (0.01 sec) mysql> select RELEASE_LOCK("testKey"); +-------------------------+ | RELEASE_LOCK("testKey") | +-------------------------+ | 1 | +-------------------------+ 1 row in set (0.00 sec)
至此Mysql的安裝也已經完成。
“如何使用Docker安裝Redis和Mysql”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。