溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Docker環(huán)境怎么構(gòu)建redis單機容器

發(fā)布時間:2021-08-26 16:00:09 來源:億速云 閱讀:161 作者:chen 欄目:云計算

本篇內(nèi)容主要講解“Docker環(huán)境怎么構(gòu)建redis單機容器”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Docker環(huán)境怎么構(gòu)建redis單機容器”吧!

1   背景介紹

Docker環(huán)境怎么構(gòu)建redis單機容器

     用傳統(tǒng)部署搭建一套redis環(huán)境,中間會消耗太多的重復的工作,導致部署效率非常低。例如:申請?zhí)摂M機,安裝操作系統(tǒng),軟件包依賴安裝和redis應用部署,這個過程中間需要花費不少時間,同時在安裝的過程中出現(xiàn)問題也需要花費一些時間去處理。然后傳統(tǒng)方式部署方式可移植性相當差。要想將現(xiàn)有redis遷移到新主機,可不是那么容易的事情,可能最簡單的方式是tar包過去,但是新主機還是需要安裝redis相關(guān)的依賴包上去,還需要花些時間去調(diào)試redis,中間反反復復的重復工作太浪費時間了。

Docker環(huán)境怎么構(gòu)建redis單機容器

      為了打破傳統(tǒng)部署模式帶來的效率低下問題,我們采用docker容器部署模式,將重復的工作精簡化,也為了方便運維工程師更加快速搭建一套redis環(huán)境,redis容器化后能夠解決安裝過程中出現(xiàn)的重復性繁瑣的工作。最終以鏡像的存儲在鏡像倉庫中。只要有需求用到redis服務,可以在任何安裝有docker軟件的主機上面運行redis容器,即可達到需求。Docker容器化后的鏡像即可實現(xiàn)即開即用的效果。


2  鏡像打包流程

Docker環(huán)境怎么構(gòu)建redis單機容器

?  Linux編譯環(huán)境:準備一臺能上外網(wǎng)的linux環(huán)境,并安裝好docker運行環(huán)境。

?  基礎(chǔ)鏡像:在構(gòu)建應用鏡像前置條件,需要準備一套干凈的centos基礎(chǔ)鏡像,然后在這個基礎(chǔ)鏡像上面去部署redis軟件。

?  配置標準化:按dockerfile的命令格式來編寫,將redis軟件安裝與redis配置步驟寫入到dockerfile文件中。然后準備好運行環(huán)境需要的配置文件和對應的運行環(huán)境啟動腳本,方便在構(gòu)建應用鏡像時將這些文件打包到鏡像中。

?  構(gòu)建應用鏡像:通過編寫dockerfile文件在基礎(chǔ)操作系統(tǒng)鏡像里面將所要運行的所依賴的軟件包和redis軟件部署到鏡像中,最后通過docker命令將其打成一個新的完整鏡像包,下次要用redis就直接下載鏡像部署。

?啟動容器:docker命令啟動容器的過程中會將redis服務啟動。

在Docker中,構(gòu)建一個自定義鏡像共有兩種方法,一是通過commit指令構(gòu)建,二是通過Dockerfile文件構(gòu)建。這里我們推薦第二種方法用dockerfile文件構(gòu)建redis鏡像。

 Dockerfile基本框架

    Dockfile是一種被Docker程序解釋的腳本,Dockerfile由一條一條的指令組成,每條指令對應Linux下面的一條命令。Docker程序?qū)⑦@些Dockerfile指令翻譯真正的Linux命令。Dockerfile有自己書寫格式和支持的命令,Docker程序解決這些命令間的依賴關(guān)系,類似于Makefile。Docker程序?qū)⒆x取Dockerfile,根據(jù)指令生成定制的image。相比image這種黑盒子,Dockerfile這種顯而易見的腳本更容易被使用者接受,它明確的表明image是怎么產(chǎn)生的。有了Dockerfile,當我們需要定制自己額外的需求時,只需在Dockerfile上添加或者修改指令,重新生成image即可,省去了敲命令的麻煩。

    Dockerfile 的內(nèi)容分為四個部分:基礎(chǔ)鏡像信息、維護者信息、鏡像操作指令和容器啟動時執(zhí)行指令

操作系統(tǒng)

FROM

按需求選擇不同類型的基礎(chǔ)操作系統(tǒng)鏡像

常用軟件

ADD

選擇運行所需要的常用軟件,如PHP、NGINX,自動設置相應的運行變量

指定用戶

USER

設置啟動容器的用戶,默認是root用戶

執(zhí)行安裝

RUN

執(zhí)行針對需求包編寫安裝腳本

切換目錄

WORKDIR

可以多次切換(相當于cd命令)

環(huán)境變量

ENV

鏡像中設置環(huán)境變量

端口映射

EXPOSE

該指令會將容器中的端口映射成宿主機器中的某個端口

存儲使用

VOLUMN

按需定義外掛目錄(IO要求高,持久化,宿主機間共享等)

啟動運行

ENTRYPOINT

設置指令,指定容器啟動時執(zhí)行的命令,可以多次設置,但是只有最后一個有效

啟動運行

CMD

容器啟動時需要執(zhí)行的腳本

4   Redis容器化過程

4.1    Linux編譯環(huán)境

    準備一臺centos7虛擬機,并在這臺主機上面安裝Docker軟件,這里以docker版本1.13.1為例,來介紹如何安裝Docker軟件步驟。

#下載docker-engine

wget   https://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-1.13.1-1.el7.centos.x86_64.rpm

#下載docker-engine-selinux

wget   https://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-selinux-1.13.1-1.el7.centos.noarch.rpm

#安裝docker軟件依賴文件

yum   install -y libtool-ltdl policycoreutils-python

#先安裝docker-engine-selinux,再安裝docker-engine-selinux

yum   localinstall docker-engine-selinux-1.13.1-1.el7.centos.noarch.rpm -y

yum   localinstall docker-engine-1.13.1-1.el7.centos.x86_64.rpm –y

#重啟docker服務

systemctl   start docker

systemctl   enable docker

下面代表docker軟件已經(jīng)安裝成功

Docker環(huán)境怎么構(gòu)建redis單機容器

4.2    獲取基礎(chǔ)鏡像

    可以直接在Linux編譯環(huán)境下載Centos7基礎(chǔ)鏡像,要求編譯環(huán)境是要能上外網(wǎng)連上hub.docker.com外網(wǎng)鏡像倉庫來下載鏡像,下面輸入docker search centos可以看到外網(wǎng)docker鏡像倉庫中有很多centos鏡像??梢酝ㄟ^docker pull openshift/base-centos7命令來下載centos基礎(chǔ)鏡像。

 Docker環(huán)境怎么構(gòu)建redis單機容器

    用docker pull已經(jīng)將鏡像下載到本地linux主機上面,接下來鏡檢查openshift/base-centos7鏡像完整性,只要docker run命令來啟動這個鏡像,我們看到這個容器已經(jīng)正常啟起來。驗證表明這個鏡像是正常的。

 Docker環(huán)境怎么構(gòu)建redis單機容器

    下面是docker日常用到的一些簡單命令:

1、下載centos鏡像

docker   pull openshift/base-centos7

2、查看鏡像

docker   images

3、刪除鏡像

Docker   rmi <IMAGE ID >

4、運行docker容器

docker   run -itd  openshift/base-centos7 echo   "hello word"

5、啟停docker容器

docker   start <CONTAINER ID >

Docker   stop <CONTAINER ID >

Docker   kill <CONTAINER ID >

6、進入docker容器中

Docker   exec –it <CONTAINER ID > bash

Docker   attach <CONTAINER ID >

7、刪除容器

Docker   rm <CONTAINER ID >

4.3    創(chuàng)建dockerfile構(gòu)建redis環(huán)境

1、編寫redis打包鏡像的dockerfile步驟

Docker環(huán)境怎么構(gòu)建redis單機容器

2、dockerfile編程

#引用centos基礎(chǔ)鏡像

FROM   openshift/base-centos7

MAINTAINER   jaymarco

#安裝redis依賴包與redis軟件

RUN   yum install gcc  gcc-c++ make  cmake    tar  python-setuptools -y   && \

curl   -fL http://download.redis.io/releases/redis-3.2.3.tar.gz | tar xzf - -C /tmp   &&\

cd   /tmp/redis-3.2.3 && \

make   PREFIX=/usr/local/redis install && \

mkdir   -p /usr/local/redis/{bin,etc,var,logs} && \

cp   -af   src/{redis-benchmark,redis-check-aof,redis-check-rdb,redis-cli,redis-sentinel,redis-server}   /usr/local/redis/bin/ && \

cp   -a redis.conf /usr/local/redis/etc/    &&\

cp   -a sentinel.conf /usr/local/redis/etc/ &&\

echo   "export PATH=/usr/local/redis/bin:\$PATH" >   /etc/profile.d/redis.sh && \

source   /etc/profile.d/redis.sh && \

groupadd   -r redis &&\

useradd   -g redis  redis && \

chmod   -R 755 /usr/local/redis/etc && \

yum   clean all && \

rm   -rf /tmp/redis-3.2.3 &&\

/bin/cp   /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&\

echo   'Asia/Shanghai' >/etc/timezone

#redis參數(shù)優(yōu)化

RUN   sed -e 's/^bind 127.0.0.1/#bind 127.0.0.1/' \

-e   's/#   save ""/save   ""/'   \

-e   's/save 900 1/#save 900 1/' \

-e   's/save 300 10/#save 300 10/' \

-e   's/save 60 10000/#save 60 10000/'  \

-e   's/appendonly no/appendonly yes/' \

-e   's/# maxmemory-policy noeviction/maxmemory-policy noeviction/' \

-e   '481i\requirepass Redis@2017' \

-e   '539i\maxmemory 2147483648' \

-i   /usr/local/redis/etc/redis.conf && \

sed   "s|dir ./|dir /usr/local/redis/dumpdb/|"  -i /usr/local/redis/etc/redis.conf   && \

sed   "s|logfile ""|logfile   "/usr/local/redis/logs/redis.log"|"  -i    /usr/local/redis/etc/redis.conf

#容器端口映射

EXPOSE   6379

#啟動redis

ENTRYPOINT   ["/usr/local/redis/bin/redis-server", "/usr/local/redis/etc/redis.conf"]

4.4    構(gòu)建redis鏡像

    通過docker build執(zhí)行創(chuàng)建,-t參數(shù)指定鏡像名稱,來構(gòu)建redis鏡像

    docker build -t redis:v3.2.3 .

    執(zhí)行中會有類似輸出: 

Docker環(huán)境怎么構(gòu)建redis單機容器

執(zhí)行完畢后,輸入docker images可以查看當前本機的鏡像,如下圖,可以看到新增的鏡像

Docker環(huán)境怎么構(gòu)建redis單機容器

1.1    啟動redis容器

    Redis是有狀態(tài)數(shù)據(jù),我們將redis的數(shù)據(jù)文件存儲到本地宿主機,只需要在啟動redis容器的時候?qū)⒈镜啬夸浺跃淼姆绞綊燧d到容器中。

    在本地宿主機創(chuàng)建一個redis存儲目錄

    mkdir –p /home/redisdump

  然后啟動redis容器

docker run -itd --name redis

-v   /home/redisdump:/usr/local/redis/dumpdb \

-p   6379:6379 redis:v3.2.3

我們看到容器已經(jīng)正常啟動,并能查看到它正在運行的進行信息。

Docker環(huán)境怎么構(gòu)建redis單機容器

1   驗證redis容器

    啟動redis容器的時候已將redis容器的6379端口映射到外面的宿主機6379端口,說明我們能夠通過宿主機地址加上6379就能夠訪問redis容器里面的數(shù)據(jù)。

    現(xiàn)在我們來測試一下

Docker環(huán)境怎么構(gòu)建redis單機容器

    現(xiàn)在宿主機上模擬插入一條數(shù)據(jù),然后返回到容器查看數(shù)據(jù)是否存在

Docker環(huán)境怎么構(gòu)建redis單機容器

    進入容器我們查看數(shù)據(jù)是有的,說明我們的鏡像是成功的。

Docker環(huán)境怎么構(gòu)建redis單機容器

到此,相信大家對“Docker環(huán)境怎么構(gòu)建redis單機容器”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI