您好,登錄后才能下訂單哦!
本篇內容主要講解“Docker環境怎么構建redis單機容器”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Docker環境怎么構建redis單機容器”吧!
用傳統部署搭建一套redis環境,中間會消耗太多的重復的工作,導致部署效率非常低。例如:申請虛擬機,安裝操作系統,軟件包依賴安裝和redis應用部署,這個過程中間需要花費不少時間,同時在安裝的過程中出現問題也需要花費一些時間去處理。然后傳統方式部署方式可移植性相當差。要想將現有redis遷移到新主機,可不是那么容易的事情,可能最簡單的方式是tar包過去,但是新主機還是需要安裝redis相關的依賴包上去,還需要花些時間去調試redis,中間反反復復的重復工作太浪費時間了。
為了打破傳統部署模式帶來的效率低下問題,我們采用docker容器部署模式,將重復的工作精簡化,也為了方便運維工程師更加快速搭建一套redis環境,redis容器化后能夠解決安裝過程中出現的重復性繁瑣的工作。最終以鏡像的存儲在鏡像倉庫中。只要有需求用到redis服務,可以在任何安裝有docker軟件的主機上面運行redis容器,即可達到需求。Docker容器化后的鏡像即可實現即開即用的效果。
2 鏡像打包流程
? Linux編譯環境:準備一臺能上外網的linux環境,并安裝好docker運行環境。
? 基礎鏡像:在構建應用鏡像前置條件,需要準備一套干凈的centos基礎鏡像,然后在這個基礎鏡像上面去部署redis軟件。
? 配置標準化:按dockerfile的命令格式來編寫,將redis軟件安裝與redis配置步驟寫入到dockerfile文件中。然后準備好運行環境需要的配置文件和對應的運行環境啟動腳本,方便在構建應用鏡像時將這些文件打包到鏡像中。
? 構建應用鏡像:通過編寫dockerfile文件在基礎操作系統鏡像里面將所要運行的所依賴的軟件包和redis軟件部署到鏡像中,最后通過docker命令將其打成一個新的完整鏡像包,下次要用redis就直接下載鏡像部署。
?啟動容器:docker命令啟動容器的過程中會將redis服務啟動。
在Docker中,構建一個自定義鏡像共有兩種方法,一是通過commit指令構建,二是通過Dockerfile文件構建。這里我們推薦第二種方法用dockerfile文件構建redis鏡像。
3 Dockerfile基本框架
Dockfile是一種被Docker程序解釋的腳本,Dockerfile由一條一條的指令組成,每條指令對應Linux下面的一條命令。Docker程序將這些Dockerfile指令翻譯真正的Linux命令。Dockerfile有自己書寫格式和支持的命令,Docker程序解決這些命令間的依賴關系,類似于Makefile。Docker程序將讀取Dockerfile,根據指令生成定制的image。相比image這種黑盒子,Dockerfile這種顯而易見的腳本更容易被使用者接受,它明確的表明image是怎么產生的。有了Dockerfile,當我們需要定制自己額外的需求時,只需在Dockerfile上添加或者修改指令,重新生成image即可,省去了敲命令的麻煩。
Dockerfile 的內容分為四個部分:基礎鏡像信息、維護者信息、鏡像操作指令和容器啟動時執行指令
操作系統 | FROM | 按需求選擇不同類型的基礎操作系統鏡像 |
常用軟件 | ADD | 選擇運行所需要的常用軟件,如PHP、NGINX,自動設置相應的運行變量 |
指定用戶 | USER | 設置啟動容器的用戶,默認是root用戶 |
執行安裝 | RUN | 執行針對需求包編寫安裝腳本 |
切換目錄 | WORKDIR | 可以多次切換(相當于cd命令) |
環境變量 | ENV | 鏡像中設置環境變量 |
端口映射 | EXPOSE | 該指令會將容器中的端口映射成宿主機器中的某個端口 |
存儲使用 | VOLUMN | 按需定義外掛目錄(IO要求高,持久化,宿主機間共享等) |
啟動運行 | ENTRYPOINT | 設置指令,指定容器啟動時執行的命令,可以多次設置,但是只有最后一個有效 |
啟動運行 | CMD | 容器啟動時需要執行的腳本 |
準備一臺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軟件已經安裝成功
可以直接在Linux編譯環境下載Centos7基礎鏡像,要求編譯環境是要能上外網連上hub.docker.com外網鏡像倉庫來下載鏡像,下面輸入docker search centos可以看到外網docker鏡像倉庫中有很多centos鏡像。可以通過docker pull openshift/base-centos7命令來下載centos基礎鏡像。
用docker pull已經將鏡像下載到本地linux主機上面,接下來鏡檢查openshift/base-centos7鏡像完整性,只要docker run命令來啟動這個鏡像,我們看到這個容器已經正常啟起來。驗證表明這個鏡像是正常的。
下面是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 > |
1、編寫redis打包鏡像的dockerfile步驟
2、dockerfile編程
#引用centos基礎鏡像 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參數優化 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"] |
通過docker build執行創建,-t參數指定鏡像名稱,來構建redis鏡像
docker build -t redis:v3.2.3 .
執行中會有類似輸出:
執行完畢后,輸入docker images可以查看當前本機的鏡像,如下圖,可以看到新增的鏡像
Redis是有狀態數據,我們將redis的數據文件存儲到本地宿主機,只需要在啟動redis容器的時候將本地目錄以卷的方式掛載到容器中。
在本地宿主機創建一個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 |
我們看到容器已經正常啟動,并能查看到它正在運行的進行信息。
啟動redis容器的時候已將redis容器的6379端口映射到外面的宿主機6379端口,說明我們能夠通過宿主機地址加上6379就能夠訪問redis容器里面的數據。
現在我們來測試一下
現在宿主機上模擬插入一條數據,然后返回到容器查看數據是否存在
進入容器我們查看數據是有的,說明我們的鏡像是成功的。
到此,相信大家對“Docker環境怎么構建redis單機容器”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。