专业的集团网站建设哪家,网站建设合同概念,台州网站推广排名,施工企业科技宣传片文章目录 0. 前言1. Linux 下 安装 Docker1.1 Docker 基本概念1.2 Linux 安装 Docker1.2.1 安装1.2.2 Hello World 1.3 Docker 常用命令1.3.1 系统启动/暂停/卸载 docker1.3.2 docker 容器的增/删/停/查看状态1.3.3 小结 1.4 Docker 可视化工具推荐 2. Docker 下 安装 Redis2.1… 文章目录 0. 前言1. Linux 下 安装 Docker1.1 Docker 基本概念1.2 Linux 安装 Docker1.2.1 安装1.2.2 Hello World 1.3 Docker 常用命令1.3.1 系统启动/暂停/卸载 docker1.3.2 docker 容器的增/删/停/查看状态1.3.3 小结 1.4 Docker 可视化工具推荐 2. Docker 下 安装 Redis2.1 Redis 基本概念2.1.1 Redis 是什么2.1.2 Redis 常见数据结构 2.2 Docker 下安装 Redis2.3 Redis 常用命令2.4 Redis 可视化工具推荐 3. 总结 当你翻旧物发现了宝贝......
0. 前言
某天秋高气爽emmm发文时可能已立冬了风和日丽广东这边一如既往地闷热成功水字一行手动emoj。闲来无事打开尘封已久的服务器一看嗯风平浪静并没有受到攻击。于是我就想着看看能不能在这台服务器搞点什么东西做个项目学习一下。
一般web项目缓存都会用到redis那就先从配一个redis开始吧现在流行用 docker 配置正准备下载 docker 呢 随手 docker images 一下好家伙原来不知道什么时候已经有了云服务器送的? 还是哪天我乱搞搞上去的不记得不管了那咱就直接docker 下 安装 redis 吧
当然了为了更好地水一水字数下文还是会提一下 Docker 及 Redis 的一些基本概念方便自己及各位读者大大后续学习。
学习目标 Docker 下 安装 Redis 并能访问。后续可根据本次 Docker 配置 及 Redis 下载对 Docker 以及 Redis 进行更深入学习并将其运用到个人项目中。
参考教程
知乎-优秀参考教程Worktile-Docker三大核心概念bilibili-优秀参考教程docker官网51CTO-优秀参考博客腾讯云Docker安装Redis
1. Linux 下 安装 Docker
1.1 Docker 基本概念
本小节我们介绍 Docker 的基本概念。
Docker 是一个开源的应用容器引擎让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 ——《百度百科》
其中Docker 有 三大核心概念: 仓库、镜像、容器我们必须了解便于日后更深入的学习:
仓库 仓库类似于我们常用的代码仓库与 Maven 仓库、 Git Hub 等类似此处主要指 docker hub远程仓库。仓库的贡献者是全世界的程序员我们的镜像主要从仓库中拉取。一般常用的镜像拉取下来之后都是开箱即用。
镜像 docker 镜像类似于虚拟机镜像。docker 镜像 提供了虚拟机运行所需的库、资源、配置等文件也提供了许多运行时参数。
从我个人对各类镜像的使用体验看来我个人将镜像看作是一个大点的安装包像是系统镜像。仅从使用的角度我们把它当作安装包就好了。
容器 容器也类似于我们常见的容器概念。每个容器是独立的互不干扰。当然如果特定需求要让不同容器里的不同服务相互产生联系也不是不行需要另寻解决方案。就像是我们生活中衣柜、文件柜等都可以看作一个个容器一般情况下根据用途分门别类放置物品。 其中docker 容器 由docker 镜像生成。从严格意义上来说镜像层是只读的docker 在镜像层上层 创建一个可写层镜像本身不变。
上次公司内部培训我一位师兄作为讲师他是这么教我们的看Docker 的 LOGO 多像集装箱相互独立互不影响里面装的货物都能各自使用。 这是因为每个 docker 容器 里跑的是一个个虚拟机镜像在虚拟机里运行就像是我们在 Windows 安装的 VMware。 至于获取镜像的仓库类似于Maven、某Hub等远程仓库里面放了很多大家做好的镜像拉下来用即可。
以上概念太多不好理解在深入学习之前我们可以先收藏 Docker 三大核心概念然后 简单地 理解: Docker 是一些大佬做的工具我们重点学习的是如何使用这个工具。
至于 Docker 更深入的概念篇幅有限下次我们再一起学习吧
1.2 Linux 安装 Docker
虽然俺的服务器已安装了Docker但来都来了怎么样也得给兄弟们重新安装一遍争取一文会用 Docker 嘛。
1.2.1 安装
我的是CentOS按照官网提示CentOS docker 键入如下命令安装
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin当然由于网络、yum工具没有及时更新等原因直接使用官网给的命令下载不一定成功此时我们可选用一些其它参考文章推荐的安装方式例如
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun安装成功后执行 docker -v命令若成功输出 docker 版本则安装成功。
docker -v
Docker version 24.0.7, build afdd53b1.2.2 Hello World
程序员的第一句代码都是hello worlddocker 也不例外。已有大佬在docker 仓库上打包好了 hello world 镜像。在正式开始学习 docker 常用命令之前我们先走个流程运行 hello world镜像吧
启动docker 初次使用docker 很有可能会因为系统并没有运行docker 而导致 执行 docker 命令时报 Cannot Connect to the Docker Daemon at ‘unix:///var/run/docker.sock 此时我们先启动docker 就可解决
# 启动docker
[rootlocalhost ~]# systemctl start docker# 查看docker 状态
[rootlocalhost ~]# systemctl status docker拉取hello-world镜像
docker pull hello-world出现以下说明成功 [rootlocalhost ~]# docker pull hello-world
Using default tag: latest
latest: Pulling from library/hello-world
719385e32844: Pull complete
Digest: sha256:88ec0acaa3ec199d3b7eaf73588f4518c25f9d34f58ce9a0df68429c5af48e8d
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest跑一跑hello-world
docker run hello-world效果
[rootlocalhost ~]# docker run hello-worldHello from Docker!
This message shows that your installation appears to be working correctly.To generate this message, Docker took the following steps:1. The Docker client contacted the Docker daemon.2. The Docker daemon pulled the hello-world image from the Docker Hub.(amd64)3. The Docker daemon created a new container from that image which runs theexecutable that produces the output you are currently reading.4. The Docker daemon streamed that output to the Docker client, which sent itto your terminal.To try something more ambitious, you can run an Ubuntu container with:$ docker run -it ubuntu bashShare images, automate workflows, and more with a free Docker ID:https://hub.docker.com/For more examples and ideas, visit:https://docs.docker.com/get-started/
执行成功欢迎来到 docker 的世界
1.3 Docker 常用命令
好了现在我们有了Docker在正式拉取我们所需的镜像之前我们先熟悉一下Docker 常用命令吧
1.3.1 系统启动/暂停/卸载 docker
要让 docker 根据我们的需求一般都是开机自启如期启动运行首先我们要从系统层面设置 docker 开机自启
# 启动Docker
systemctl start docker
# 停⽌Docker
systemctl stop docker
# 重启
systemctl restart docker
# 设置开机⾃启
systemctl enable docker
若是 docker 由于某些原因损坏需要重装那么可参考以下卸载命令:
yum remove docker1.3.2 docker 容器的增/删/停/查看状态
docker 常见命令。篇幅有限本小节只介绍相关命令至于命令的细节如命令的各参数读者请自行查阅。
相关命令
# 拉取镜像
docker pull# 推送镜像到Docker Registry
docker push# 查看本地镜像
docker images# 删除本地镜像
docker rmi # 创建并运行容器
docker run# 停止指定容器
docker stop# 启动指定容器
docker restart# 删除指定容器
docker rm# 查看容器
docker ps# 查看容器运行日志
docker logs# 进入容器
docker exec# 保存镜像到本地压缩文件
docker save# 加载本地压缩文件到镜像
docker load# 查看容器详细信息
docker inspect细心的同学可能发现了除了要加上 docker 前缀以及 部分参数可能要遵循 docker 的规则docker 的大部分命令与 Linux 命令很像。触类旁通。
实践 我们可以将上文提到的hello-world 进行 docker 命令的练习。此处给个我个人练习的示例
[rootlocalhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8b039b88c24c hello-world /hello 4 hours ago Exited (0) 4 hours ago gracious_mcclintock
[rootlocalhost ~]# docker rm 8b039b88c24c
8b039b88c24c
[rootlocalhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[rootlocalhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest 7f27d60cb8e0 12 days ago 138MB
hello-world latest 9c7a54a9a43c 6 months ago 13.3kB
[rootlocalhost ~]# docker rmi 9c7a54a9a43c
Untagged: hello-world:latest
Untagged: hello-worldsha256:88ec0acaa3ec199d3b7eaf73588f4518c25f9d34f58ce9a0df68429c5af48e8d
Deleted: sha256:9c7a54a9a43cca047013b82af109fe963fde787f63f9e016fdc3384500c2823d
Deleted: sha256:01bb4fce3eb1b56b05adf99504dafd31907a5aadac736e36b27595c8b92f07f1
[rootlocalhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest 7f27d60cb8e0 12 days ago 138MB
[rootlocalhost ~]#哈哈上述例子 redis 偷跑了这是本文第二个主题也是我本人原本要的目标镜像与容器没关系在下一小节我们依然会介绍docker 下载 redis 并简要介绍 redis 相关 概念
1.3.3 小结
Docker 除了可以拉取仓库上的镜像并创建容器还可以将自己的项目制作成镜像并在容器里启动。
至于 Docker 更高级的用法篇幅有限请读者留意工作中的小确幸自行体验。
1.4 Docker 可视化工具推荐
命令敲烦了命令太多记不住没关系Docker 可视化工具来帮你。 本小节我们推荐两个常用的 Docker 可视化工具。
微软官方教程-Windows docker简书社区优秀教程-portainer
至于更多优秀的可视化工具篇幅有限请读者自行发掘。
2. Docker 下 安装 Redis
2.1 Redis 基本概念
本小节我们介绍 Redis 的基本概念。
2.1.1 Redis 是什么
Redis是一种高性能的开源内存数据库它主要用于缓存、数据存储和消息传递。Redis的基本原理是将数据存储在内存中以提供快速的读写操作。它使用键值对的方式存储数据并支持多种数据结构如字符串、哈希、列表、集合和有序集合等。Redis还具有持久化的能力可以根据不同的持久化策略将数据定期写入磁盘以防止数据丢失。此外Redis还支持发布/订阅模式允许不同的应用程序之间进行实时消息传递。
实际工作中我们常用 Redis 来进行缓存。除此之外使用 Redis 还能实现单点登录、MQ等功能甚至可当作数据库存储数据。
2.1.2 Redis 常见数据结构
Redis 常见的数据结构有
字符串String由于串的特性字符串的访问速度非常快。常用于缓存用户名、邮箱地址等信息。列表ListRedis 的列表是有序列表每个元素都有自己索引。常用于缓存任务队列、消息队列。Set: 类似于我们常见的Set每个元素不重复。常用于存储一些tag等非重复信息。Soorted Set: 有序集合 可以实现排序、排名等功能。哈希表Hash: 键值对可以用它来实现灵活的数据结构。常用于缓存用户信息、物品信息等。
至于 Redis 更深入的概念及常见面试题篇幅有限请读者自行查阅。
2.2 Docker 下安装 Redis
有了上面一个章节的铺垫docker 安装 Redis 就轻松了许多本小节就当作是 docker 实战演练吧
Docker 拉取 Redis
# 走流程,查看 Redis
docker search redis# 拉取 latest 版本 Redis
docker pull redis# 拉取完毕后查看镜像
docker images以下是我个人执行的效果
[rootlocalhost ~]# docker pull redis
Using default tag: latest
latest: Pulling from library/redis
578acb154839: Already exists
9a217a51793f: Pull complete
07058ed9ec8f: Pull complete
d3ba9a132495: Pull complete
adeece162a71: Pull complete
4f4fb700ef54: Pull complete
7018b7448b70: Pull complete
Digest: sha256:ac4e8dd2fed59eddba2805411db8664f5fd69a64f33303f3b8fec79abd4ff97a
Status: Downloaded newer image for redis:latest
docker.io/library/redis:latest
[rootlocalhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest e10bd12f0b2d 5 days ago 138MBRedis 配置 这一段我们参考本文开头的参考教程来 这里主要的步骤是将Redis的配置文件进行挂载以配置文件方式启动Redis容器。这里涉及一个概念挂载将宿主机的文件和容器内部目录相关联相互绑定。
(1) 创建redis相关目录
[rootlocalhost /]# mkdir -p /home/redis/myredis
[rootlocalhost /]# cd /home
[rootlocalhost home]# ls
redis sharry
[rootlocalhost home]# cd redis
[rootlocalhost redis]# ls
myredis
[rootlocalhost redis]# cd myredis/
[rootlocalhost myredis]# mkdir data
(2) 编辑/上传conf文件
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 ::1
# bind 127.0.0.1protected-mode noport 6379tcp-backlog 511requirepass 000415timeout 0tcp-keepalive 300daemonize nosupervised nopidfile /var/run/redis_6379.pidloglevel noticelogfile databases 30always-show-logo yessave 900 1
save 300 10
save 60 10000stop-writes-on-bgsave-error yesrdbcompression yesrdbchecksum yesdbfilename dump.rdbdir ./replica-serve-stale-data yesreplica-read-only yesrepl-diskless-sync norepl-disable-tcp-nodelay noreplica-priority 100lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush noappendonly yesappendfilename appendonly.aofno-appendfsync-on-rewrite noauto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mbaof-load-truncated yesaof-use-rdb-preamble yeslua-time-limit 5000slowlog-max-len 128notify-keyspace-events hash-max-ziplist-entries 512
hash-max-ziplist-value 64list-max-ziplist-size -2list-compress-depth 0set-max-intset-entries 512zset-max-ziplist-entries 128
zset-max-ziplist-value 64hll-sparse-max-bytes 3000stream-node-max-bytes 4096
stream-node-max-entries 100activerehashing yeshz 10dynamic-hz yesaof-rewrite-incremental-fsync yesrdb-save-incremental-fsync yes(3) 启动容器
docker run --restartalways --log-opt max-size100m --log-opt max-file2 -p 6379:6379 --name myredis -v /home/redis/myredis/myredis.conf:/etc/redis/redis.conf -v /home/redis/myredis/data:/data -d redis redis-server /etc/redis/ redis.conf --appendonly yes --requirepass password(4) 查看Redis容器状态
docker ps -a
docker ps -a |grep myredis
docker exec -it myredis redis-cli上述命令若有正确返回且进入Redis容器后启动 cli 并输入密码后能正常操作则说明成功。
好嘞至此我们 docker 下载并配置 redis 完成接下来我们可以愉快地使用了对于初学或想快速回顾的读者下文我还提了一些 Redis 相关概念凑字数欢迎继续阅读 ~
2.3 Redis 常用命令
以下简单介绍 Redis 常用命令。 一般情况下 Redis 的使用频次没有 SQL 多如非面试也无需硬记当作字典用到的时候再查即可。
* SET key value设置 key 的值为 value。
* GET key获取 key 的值。
* INCR key将 key 的值加 1。
* DECR key将 key 的值减 1。
* LPUSH key value将 value 插入到列表 key 的表头。
* RPUSH key value将 value 插入到列表 key 的表尾。
* LRANGE key start stop获取列表 key 中 start 至 stop 之间的元素。
* SADD key member将 member 添加到集合 key 中。
* SMEMBERS key获取集合 key 中的所有元素。
* SCARD key获取集合 key 的元素个数。
* HSET key field value将 field 的值设置为 value 。
* HGET key field获取 field 的值。
* HKEYS key获取 key 中所有的 field。
* HMGET key field1 field2 ...获取 key 中多个 field 的值。
* HMSET key field1 value1 field2 value2 ...同时设置多个 field 的值。
* HDEL key field1 field2 ...删除 key 中多个 field。
* HLEN key获取 key 中 field 的个数。
* INCRBY key increment将 key 的值加上 increment。
* DECRBY key decrement将 key 的值减去 decrement。
* EXPIRE key seconds设置 key 的过期时间为 seconds 秒。
* TTL key获取 key 的剩余过期时间以秒为单位。
* KEYS pattern获取所有符合 pattern 的 key。
* FLUSHDB清空当前数据库。
* FLUSHALL清空所有数据库。至于 Redis 更高级的用法以及常用的结合工具包让我们在项目中可以用代码操作redis及常见面试题篇幅有限请读者自行查阅。
2.4 Redis 可视化工具推荐
命令敲烦了命令太多记不住没关系Redis 可视化工具来帮你。 本小节我们推荐一下两个常用的 Docker 可视化工具。 RESP.app CSDN-RESP-redis可视化管理工具优秀参考博文 Another Redis Desktop Manager CSDN-Another Redis Desktop Manager优秀参考博文
至于更多优秀的可视化工具篇幅有限请读者自行发掘。
3. 总结
本文主要介绍一次个人无意中发现了自己原来有台服务器以及安装了Docker本着物尽其用的原则实操 Linux OS 下载Docker、 Docker 的基本使用入门、Docker 下安装Redis实战并记录成此文。
顺便简要介绍了一下 Docker 、 Redis 这两个工作中常用工具的概念以便快速入门或回顾。当作是买一送一供读者参考。