出品丨Docker公司(ID:docker-cn)
编译丨小东
每周一、三、五,与您不见不散!
Docker 的一大优点是可以让您快速使用它来试用应用程序,而无需直接在开发人员的计算机上安装它。如果您不想在自己的计算机上安装 Java 或 erlang 等运行时环境,那么您就可以不安装它们,因为容器封装了所有依赖项,并在删除时可以不留下任何痕迹。
接下来,我会持续发布一些简短的教程,展示如何使用 Docker 探索各种开源软件。今天,让我们先从 Redis 开始。本教程的重点是让您熟悉创建容器和在容器中执行自定义命令所需的 Docker 命令,同时希望您可以在学习过程中也能学到一些有关 Redis 的基本知识。
简 介
本教程将介绍如何使用 Docker 探索 Redis。您可以在 Linux 或 Docker for Windows 模式下运行Docker 命令。同时,您也可以用 Play with Docker 来试试。
启动一个运行 Redis 的新容器
在这里,我们给它一个名字 —— “redis1”,同时公开6379端口(Redis 默认值)。
docker run -d -p 6379:6379 --name redis1 redis
检查它是否正在运行
docker ps
查看日志输出
docker logs redis1
在容器中运行 Redis CLI
我们将在运行中的容器中用“-it”启动一个新的交互式会话,并使用它来运行“redis-cli”。我们可以直接运行它,但是现在,让我们用“sh”启动一个 shell:
docker exec -it redis1 sh
现在,我们已经连接到容器了。让我们运行“redis-cli”:
# redis-cli
尝试一些基本的 Redis 命令
如果我们发送“ping”,应该会返回“PONG”:
127.0.0.1:6379> ping
PONG
尝试更多命令(设置一个键并增加一个计数器):
127.0.0.1:6379> set name mark
OK
127.0.0.1:6379> get name
"mark"
127.0.0.1:6379> incr counter
(integer) 1
127.0.0.1:6379> incr counter
(integer) 2
127.0.0.1:6379> get counter
"2"
当我们完成尝试后时,退出“redis-cli”和“sh”:
127.0.0.1:6379> exit
# exit
从另一个关联容器进行连接
现在,让我们启动另一个名为“client1”的容器。我们使用 redis 基础镜像进行构建,但我们只使用它来运行“redis-cli”,所以我们只要求它在交互模式下运行“sh -it”。这意味着它不会自动运行 Redis。我们使用“--rm”命令,因此它会在 shell 退出后自行删除。
我们将它链接到“redis1”容器(运行中),它将在该容器中被简单地称为“redis”。
docker run -it --rm --link redis1:redis --name client1 redis sh
现在在这个容器中,让我们启动“redis-cli”并连接到“redis”:
# redis-cli -h redis
redis:6379>
现在让我们尝试发布一些命令。由于我们没有停止原始的“redis1”容器,我们之前创建的密钥应该仍然存在:
redis:6379> get name
"mark"
redis:6379> get counter
"2"
现在,退出“redis-cli”和“sh”:
redis:6379> exit
# exit
上述操作导致“client1”容器已经被删除了。因此,我们需要查看所有容器,包含已停止的容器:
docker ps -a
我们应该能看到这个单独的 Docker 容器。
清 理
让我们停止“redis1”容器,然后删除它。
docker stop redis1
docker rm redis1
我们还下载了 redis 镜像,我们将在列表中看到它:
docker image ls
它只有 83MB,所以我们可能想要保留它,以便下次运行 Redis 容器时使用,但是如果我们确定不再需要它,我们可以删除该镜像来释放磁盘空间,并让我们回到之前的起点:
docker image rm redis
总 结
如您所见,只需几个基本的 Docker 命令,我们就可以在容器中运行 Redis,甚至可以从另一个容器连接到它。
在下一篇系列文章中,我将向您展示如何在 PostgreSQL 上进行相同操作,这将使我们有机会探索 Docker 卷。