更新时间:2022-09-25 15:11:11
root@server:/home/sam# docker pull phusion/baseimage
docker images
命令看到最新下载的镜像。root@server:/home/sam# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE phusion/baseimage 0.9.15 cf39b476aeec 3 months ago 289.4 MB phusion/baseimage latest cf39b476aeec 3 months ago 289.4 MB
root@server:/home/sam# docker run -d --name redis phusion/baseimage /sbin/my_init --enable-insecure-key
/sbin/my_init
是允许phusion在容器启动的时候启动你的服务。 enable-insecure-key
允许我们使用‘insecure key‘ssh进新的容器。docker inspect
命令。root@server:/home/sam# docker inspect redis | grep IPA "IPAddress": "172.17.0.46",
root@server:/home/sam# curl -o insecure_key -fSL https://github.com/phusion/baseimage-docker/raw/master/image/insecure_key root@server:/home/sam# chmod 600 insecure_key root@server:/home/sam# ssh -i insecure_key root@<IP address> The authenticity of host '172.17.0.52 (172.17.0.52)' can't be established. ECDSA key fingerprint is aa:bb:cc:xx:xx:xx:xx:xx:xx:xx:xx:yy:zz:04:bf:04. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '172.17.0.52' (ECDSA) to the list of known hosts. root@c36b4bba7dd4:~#
PermitRootLogin yes
root@c36b4bba7dd4:~# passwd Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully root@c36b4bba7dd4:~#
apt-get update #更新系统 apt-get upgrade #升级系统 apt-get install wget gcc make#安装wget、gcc、make
root@e3919192d9e3:/home# wget https://github.com/antirez/redis/archive/3.0.0-rc1.tar.gz
root@e3919192d9e3:/home# tar -zxvf 3.0.0-rc1.tar.gz root@e3919192d9e3:/home# cd redis-3.0.0-rc1/ root@e3919192d9e3:/home/redis-3.0.0-rc1# make
root@e3919192d9e3:/home/redis-3.0.0-rc1# cd src root@e3919192d9e3:/home/redis-3.0.0-rc1/src# mv redis-cli redis-server redis-sentinel /usr/bin/ root@e3919192d9e3:/home/redis-3.0.0-rc1/src# cd .. root@e3919192d9e3:/home/redis-3.0.0-rc1# mkdir -p /etc/redis/ root@e3919192d9e3:/home/redis-3.0.0-rc1# cp redis.conf /etc/redis/redis.conf
root@e3919192d9e3:/home/redis-3.0.0-rc1/src# redis-server /etc/redis/redis.conf root@e3919192d9e3:/home/redis-3.0.0-rc1/src#
root@e3919192d9e3:/etc/service# cd /etc/service root@e3919192d9e3:/etc/service# mkdir redis root@e3919192d9e3:/etc/service# cd redis root@e3919192d9e3:/etc/service/redis# nano run
#!/bin/sh set -e exec /usr/bin/redis-server /etc/redis/redis.conf
root@server:/home/sam# docker ps -as CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES SIZE e3919192d9e3 phusion/baseimage:0.9.15 "/sbin/my_init --ena 3 hours ago Up 3 hours redis 164.9 MB root@server:/home/sam# docker commit redis redis-cluster-node root@server:/home/sam# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE redis-cluster-node latest babfb02edf4d 5 hours ago 561.2 MB
docker stop redis
,之后再docker rm redis
:root@server:/home/sam# docker stop redis redis root@server:/home/sam# docker rm redis redis root@server:/home/sam#
redis-cli -h 192.168.0.2 -p 7001
,它将重定向到172.17.0.x -p 6379
,例如下面我们部署了三个实例:root@server:/home/sam# docker run -d --name node1 -p 7001:6379 redis-cluster-node /sbin/my_init cd1c1f96346bdf9c1cec04333c2e849992ecbc4375dcea6b30902dd9842d8c99 root@server:/home/sam# docker run -d --name node2 -p 7002:6379 redis-cluster-node /sbin/my_init cd1c1f96346bdf9c1cec04333c2e849992ecbc4375dcea6b30902dd9842d8c99 root@server:/home/sam# docker run -d --name node3 -p 7003:6379 redis-cluster-node /sbin/my_init cd1c1f96346bdf9c1cec04333c2e849992ecbc4375dcea6b30902dd9842d8c99 root@server:/home/sam#
docker ps -as
来查看我们运行的三个Redis容器:root@server:/home/sam# docker ps -as CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES SIZE a532b4ac60d9 redis-cluster-node:latest "/sbin/my_init" 5 hours ago Up 5 hours 0.0.0.0:7003->6379/tcp node3 2.267 MB 6c8a87a0a76a redis-cluster-node:latest "/sbin/my_init" 5 hours ago Up 5 hours 0.0.0.0:7002->6379/tcp node2 2.318 MB 39e02633ccf8 redis-cluster-node:latest "/sbin/my_init" 5 hours ago Up 5 hours 0.0.0.0:7001->6379/tcp node1 2.334 MB root@server:/home/sam#
redis-cli
登录到各个Redis服务器上面:root@server:/home/sam# redis-cli -h 192.168.0.2 -p 7001 redis 192.168.0.16:7001> root@server:/home/sam# redis-cli -h 192.168.0.2 -p 7002 redis 192.168.0.16:7002> root@server:/home/sam# redis-cli -h 192.168.0.2 -p 7003 redis 192.168.0.16:7003> root@server:/home/sam# redis-cli -h 192.168.0.2 -p 7005 Could not connect to Redis at 192.168.0.2:7005: Connection refused not connected>
译者增加: 如果这里验证失败了的可以登录进容器中检查下Redis的服务有没有起来:6. 配置Redis的从节点docker exec -t -i redis bash -l netstat -anp | grep redis #看看有没有网络监听,如果没有执行下面的命令启动redis服务 redis-server /etc/redis/redis.conf
root@server:/home/sam# docker inspect node1 | grep IPA "IPAddress": "172.17.0.46", root@server:/home/sam# docker inspect node2 | grep IPA "IPAddress": "172.17.0.47", root@server:/home/sam# ssh root@172.17.0.47 root@172.17.0.47's password: Last login: Tue Jan 13 11:47:31 2015 from 172.17.42.1 root@6c8a87a0a76a:~# nano /etc/redis/redis.conf
root@6c8a87a0a76a:~# cat /etc/redis/redis.conf | grep slaveof # Master-Slave replication. Use slaveof to make a Redis instance a copy of slaveof 172.17.0.46 6379 root@6c8a87a0a76a:~#
docker restart node2
重启容器, 现在它就是node1的一个从节点了。为了验证这个, 使用redis-cli分别登录到node1和node2, 在node1上运行命令set hello world
, 然后在node2上运行get hello
,如果配置正确的话会得到下面的结果:root@server:/home/sam# redis-cli -h 192.168.0.16 -p 7001 redis 192.168.0.12:7001> set hello world OK redis 192.168.0.12:7001> exit root@server:/home/sam# redis-cli -h 192.168.0.16 -p 7002 redis 192.168.0.12:7002> get hello "world" redis 192.168.0.12:7002> exit root@server:/home/sam#