🙏废话不多说系列,直接开整🙏
docker 是一个可轻松搬移 redis 的自动方便部署的平台。
(1)查询 docker 中可安装的redis的版本信息
$ docker search redis
结果如下:
drew@ubuntu:/snap/bin$ sudo docker search redis
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
redis Redis is an open source key-value store that… 9339 [OK]
bitnami/redis Bitnami Redis Docker Image 178 [OK]
sameersbn/redis 82 [OK]
grokzen/redis-cluster Redis cluster 3.0, 3.2, 4.0, 5.0, 6.0, 6.2 77
rediscommander/redis-commander Alpine image for redis-commander - Redis man… 57 [OK]
redislabs/redisearch Redis With the RedisSearch module pre-loaded… 33
redislabs/redis Clustered in-memory database engine compatib… 29
redislabs/redisinsight RedisInsight - The GUI for Redis 29
oliver006/redis_exporter Prometheus Exporter for Redis Metrics. Supp… 25
redislabs/rejson RedisJSON - Enhanced JSON data type processi… 23
arm32v7/redis Redis is an open source key-value store that… 22
bitnami/redis-sentinel Bitnami Docker Image for Redis Sentinel 21 [OK]
redislabs/redisgraph A graph database module for Redis 15 [OK]
arm64v8/redis Redis is an open source key-value store that… 12
webhippie/redis Docker images for Redis 11 [OK]
redislabs/redismod An automated build of redismod - latest Redi… 10 [OK]
s7anley/redis-sentinel-docker Redis Sentinel 10 [OK]
insready/redis-stat Docker image for the real-time Redis monitor… 10 [OK]
goodsmileduck/redis-cli redis-cli on alpine 9 [OK]
circleci/redis CircleCI images for Redis 5 [OK]
centos/redis-32-centos7 Redis in-memory data structure store, used a… 5
clearlinux/redis Redis key-value data structure server with t… 3
wodby/redis Redis container image with orchestration 1 [OK]
tiredofit/redis Redis Server w/ Zabbix monitoring and S6 Ove… 1 [OK]
xetamus/redis-resource forked redis-resource 0 [OK]
drew@ubuntu:/snap/bin$
(2)安装最新版的 Redis 镜像
# 如果需要指定版本或者安装最新的,可以如下:
$ docker pull redis:latest
(3)检查本地的镜像
# 检查本地的所有镜像
$ docker images
(4)查看本地镜像中是否存在指定镜像
例如:查看本地是否存在 hello 镜像。
# 查看本地是否存在 hello 镜像。
$ docker images hello
(5)运行容器 ♥
安装完成后,我们可以使用一下命令来运行 redis 容器:
$ docker run -itd --name redis-test -p 6379:6379 redis
参数说明:
【-p 6379:6379】:映射内容服务的 6379端口到宿主机的 6379 端口。外部可以直接通过宿主机 IP:6379 访问到 Redis 服务。
drew@ubuntu:/snap/bin$ sudo docker run -itd --name redis-test-1 -p 6380:6379 redis
99493250795f5ef9156d9eeea9469cb12a15cf54c73bbcc0e38a36f38b19e562
问题①:端口在宿主机上被占用
问题详情
drew@ubuntu:/snap/bin$ sudo docker run -itd --name redis-test -p 6379:6379 redis
4e35d594e2384c7e5cf543663255b9a089969f6423e47b5c63de4db6062bae78
docker: Error response from daemon: driver failed programming external connectivity on endpoint redis-test (b8e098462f013a125f7efa695268d1ff33be0630d44342b2af7f8e0b38915e4e): Error starting userland proxy: listen tcp 0.0.0.0:6379: bind: address already in use.
解决办法
# 修改映射到宿主机的端口,如下
$ docker run -itd --name redis-test-1 -p 6380:6379 redis
# 例如:开启成功后,会返回一个 ID值
drew@ubuntu:/snap/bin$ sudo docker run -itd --name redis-test-1 -p 6380:6379 redis
99493250795f5ef9156d9eeea9469cb12a15cf54c73bbcc0e38a36f38b19e562
(6)安装成功
查看容器的运行信息。
$ docker ps
(7)使用 redis-cli 连接测试 redis 服务
$ docker exec -it redis-test-1 /bin/bash
验证二:使用 外部第三方工具连接redis
(8)退出操作
(9)关闭 docker 中的 redis 服务
① 根据【容器名称】关闭容器服务
$ docker container stop redis-test-1
② 根据【容器ID】关闭容器服务
$ docker container stop "4e35d594e2384c7e5cf543663255b9a089969f6423e47b5c63de4db6062bae78"
# 操作示例:
drew@ubuntu:/snap/bin$ sudo docker run -itd --name redis-test -p 6379:6379 redis
docker: Error response from daemon: Conflict. The container name "/redis-test" is already in use by container "4e35d594e2384c7e5cf543663255b9a089969f6423e47b5c63de4db6062bae78". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.
drew@ubuntu:/snap/bin$ ^C
drew@ubuntu:/snap/bin$ docker container stop "4e35d594e2384c7e5cf543663255b9a089969f6423e47b5c63de4db6062bae78"
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/4e35d594e2384c7e5cf543663255b9a089969f6423e47b5c63de4db6062bae78/stop: dial unix /var/run/docker.sock: connect: permission denied
drew@ubuntu:/snap/bin$ sudo docker container stop "4e35d594e2384c7e5cf543663255b9a089969f6423e47b5c63de4db6062bae78"
4e35d594e2384c7e5cf543663255b9a089969f6423e47b5c63de4db6062bae78
(10)查看 Redis 容器的运行日志
$ sudo docker container logs redis-test-1
结果显示
drew@ubuntu:/snap/bin$ sudo docker container logs redis-test-1
1:C 20 Apr 2021 08:06:09.026 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1:C 20 Apr 2021 08:06:09.026 # Redis version=6.2.1, bits=64, commit=00000000, modified=0, pid=1, just started
1:C 20 Apr 2021 08:06:09.026 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
1:M 20 Apr 2021 08:06:09.026 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.
1:M 20 Apr 2021 08:06:09.027 # Server can't set maximum open files to 10032 because of OS error: Operation not permitted.
1:M 20 Apr 2021 08:06:09.027 # Current maximum open files is 4096. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase 'ulimit -n'.
1:M 20 Apr 2021 08:06:09.027 * monotonic clock: POSIX clock_gettime
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 6.2.1 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 1
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
1:M 20 Apr 2021 08:06:09.028 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
1:M 20 Apr 2021 08:06:09.028 # Server initialized
1:M 20 Apr 2021 08:06:09.028 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
1:M 20 Apr 2021 08:06:09.029 * Ready to accept connections
1:signal-handler (1618906980) Received SIGTERM scheduling shutdown...
1:M 20 Apr 2021 08:23:00.519 # User requested shutdown...
1:M 20 Apr 2021 08:23:00.519 * Saving the final RDB snapshot before exiting.
1:M 20 Apr 2021 08:23:00.521 * DB saved on disk
1:M 20 Apr 2021 08:23:00.521 # Redis is now ready to exit, bye bye...
附录
(1)容器命令帮助文档---查看
如果你忘记了容器的操作命令,你可以如下操作
语法格式为:docker container [command] --help 或者 docker container [command] 来查看说明。
$ sudo docker container rename
"docker container rename" requires exactly 2 arguments.
See 'docker container rename --help'.
Usage: docker container rename CONTAINER NEW_NAME
Rename a container
(2)查看 Docker 下 容器管理相关的命令
# 语法格式
$ sudo docker container --help # 或者
$ sudo docker container
# 操作如下:
drew@ubuntu:/snap/bin$ sudo docker container --help
Usage: docker container COMMAND
Manage containers
Commands:
attach Attach local standard input, output, and error streams to a running container
commit Create a new image from a container's changes
cp Copy files/folders between a container and the local filesystem
create Create a new container
diff Inspect changes to files or directories on a container's filesystem
exec Run a command in a running container
export Export a container's filesystem as a tar archive
inspect Display detailed information on one or more containers
kill Kill one or more running containers
logs Fetch the logs of a container
ls List containers
pause Pause all processes within one or more containers
port List port mappings or a specific mapping for the container
prune Remove all stopped containers
rename Rename a container
restart Restart one or more containers
rm Remove one or more containers
run Run a command in a new container
start Start one or more stopped containers
stats Display a live stream of container(s) resource usage statistics
stop Stop one or more running containers
top Display the running processes of a container
unpause Unpause all processes within one or more containers
update Update configuration of one or more containers
wait Block until one or more containers stop, then print their exit codes
Run 'docker container COMMAND --help' for more information on a command.
(3)♥ Redis从开启到关闭 操作完整流程
# ===========================[计入Redis准备阶段]=====================================
# 从docker中拉取redis版本
$ sudo docker pull redis:latest
# 查看是否拉取redis镜像成功
$ sudo docker images redis
# 运行redis(开启一个新的容器名为redis-test,对外的端口为6380:6379的第一个,使用的镜像名为redis)
# >>> 注意:6380是这个docker 容器对外开放的redis端口,外部网络可以通过 IP:6380 连接到docker中的redis服务的。
$ sudo docker run -itd --name redis-test -p 6380:6379 redis
ab43e282bf0f42de1a8a519b54b83799de094381b6e14f650dfc7970b76ac034
# 检查redis容器运行状态(STATUS的值为UP表示正常)
$ sudo docker ps
# ===========================[进入开启使用阶段]=====================================
# 连接docker中的redis服务
$ sudo docker exec -it redis-test /bin/bash
# 进入docker容器redis-test 客户端CMD
$ redis-cli
# 进入使用redis 阶段
127.0.0.1:6379 > set test 1
OK
127.0.0.1:6379 > keys *
1) "test"
# ===========================[进入退出关闭阶段]=====================================
# 退出redis 服务
127.0.0.1:6379> exit
root@2dea66f68822:/data# exit
exit
# 关闭redis容器
$ sudo docker container stop redis-test
🙏至此,非常感谢阅读🙏