Docker學習:部署redis集羣以及運行項目
1、安裝docker(阿里雲)
CentOS安裝docker
配置阿里雲Docker Yum源
#Set up repository
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
#Use Aliyun Docker
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安裝指定版本
sudo yum install docker-ce-18.03.0.ce
啓動Docker服務
systemctl enable docker
systemctl start docker
Ubuntu安裝阿里雲docker
Ubunru支持腳本自動安裝docker
crul -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh --mirror Aliyun
注意:使用阿里雲安裝,安裝過了不能再次通過腳本安裝,要把之前的刪掉,再更新一次腳本就自動升級了。
配置docker鏡像加速器
請在 /etc/docker/daemon.json中寫入如下內容(如果文件不存在請新建該文件夾)
{
registry-mirros":[
“https://registry.docker-cn.com”
]
}
注意一定要保證該文件符合Json規範,否則docker將不能啓動
2、搭建Redis集羣
- docker拉取redis鏡像
docker pull redis
#檢查是否安裝成功
docker images
安裝redis成功:
- 構建Redis一主二從哨兵機制
#創建redis目錄
mkdir redis
#進入目錄
cd redis
配置docker-compose.yml文件
version: ‘2’
services:
master:
image: redis
container_name: redis-master
ports:
- 6379:6379
slave1:
image: redis
container_name: redis-slave-1
ports:
- 6380:6379
command: redis-server --slaveof redis-master 6379
slave2:
image: redis
container_name: redis-slave-2
ports:
- 6381:6379
command: redis-server --slaveof redis-master 6379
啓動redis服務
docker-compose up -d
#查看啓動結果
docker ps
啓動成功:
配置 Redis-sentinel客戶端監控
- 1、編寫docker-compose.yml配置文件
version: ‘2’
services:
sentinel1:
image: redis
container_name: redis-sentinel-1
ports:
-26379:26379
command: redis-sentinel /docker/sentinel/sentinel.conf
volumes:
- ./sentinel1.conf:/docker/sentinel/sentinel.conf
sentinel2:
image: redis
container_name: redis-sentinel-2
ports:
- 26380:26379
command: redis-sentinel /docker/sentinel/sentinel.conf
volumes:
- ./sentinel2.conf:/docker/sentinel/sentinel.conf
sentinel3:
image: redis
container_name: redis-sentinel-3
ports:
- 26381:26379
command: redis-sentinel /docker/sentinel/sentinel.conf
volumes:
- ./sentinel3.conf:/docker/sentinel/sentinel.conf
- 2、編寫sentinel.conf配置文件
port 26379
dir /tmp
#自定義集羣名,其中127.0.0.1爲redis-master的ip,6379爲redis-master的端口,2爲最小投票數(因爲有3臺sentinel所以可以設置成2)
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes
啓動redis-sentinel
docker-compose up -d
啓動成功如下圖所示映射到了26379端口
進入其中一臺sentinel
docker exec -it redis-sentinel-1 /bin/bash
連接redis 26379端口
redis-cli -p 26379
#查看sentinel信息
sentinel master mymaster
sentinel部署成功
3、 上傳並啓動項目
- 配置redis-sentinel
這是我jar包存放的目錄
寫超級簡單版本的 dockerfile 文件
#jdk 是一個已有的包含 jdk 的鏡像
FROM java:latest
#作者簽名
MAINTAINER Xurent
#簡化 jar 的名字路徑 (#:表示註釋掉)
ADD vr-office-0.0.1-SNAPSHOT.jar /app.jar
#執行 java -jar 命令 (CMD:在啓動容器時才執行此行。RUN:構建鏡像時就執行此行)
CMD java -jar /app.jar
#設置對外端口爲 8080
EXPOSE 8080
- 通過dockerfile 文件生成本工程的鏡像:
docker build -t vr-office .
此行命令最後有一個點,表示使用當前上下文中的 dockerfile 文件(上圖中當前路徑下綠色的那個dockerfile) 。
docker images 查看已有鏡像docker build -t vr-office .構建鏡像,-t :給鏡像取名爲 vr-office 。
構建鏡像成功
- 通過鏡像啓動容器
docker run -d -p 8080:8080–name vr vr-office
#-d 後臺運行、
#最後一個 gentle 是引用的鏡像的名字、
#–name jy_gentle 給容器取名爲 jy_gentle (取名參數前面是兩短橫線)、
#-p 8080:8080端口映射,注意是小寫 p
#前一個 8080是對外瀏覽器上訪問的端口,後一個 8080是容器內工程本身的端口,兩者可不一樣
通過命令看到docker部署項目已經成功,我們通過瀏覽器訪問一下驗證是否成功