DockerFile创建一个redis容器的全过程

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介:

本次目标是用Centos 7的基础镜像做一个redis容器供开发人员在开发环境里蹂躏。


首先,创建一个叫redis-test的文件夹,在这个redis-test文件夹里建立一个Dockerfile,内容如下:

1
2
3
4
5
6
7
FROM centos:latest
MAINTAINER Chris Chan  "chenx1242@163.com"
ENV REFRESHED_AT 2017-02-16
RUN yum -y update &&  yum -y  install  epel-release && yum -y  install  redis && yum -y  install  net-tools
EXPOSE 6379
ENTRYPOINT [  "/usr/bin/redis-server"  ]
CMD []

这里我们简单说一下整个Dockerfile的内容:

首先选择了基础镜像是centos的最新版,即centos 7,然后填写作者信息;

在yum这一块要注意,如果没有安装epel-release的话,是无法正常安装redis的,这是centos与ubuntu不一样的地方。至于后面又补充安装了net-tools是因为centos 7里不自带ifconfig命令,所以需要安装一下net-tools,这样就有了ifconfig了;

随即我们又开放了6379端口;

然后就是entrypoint和cmd,这两个命令的区别很重要,具体区别请看:http://cloud.51cto.com/art/201411/457338.htm 这篇文章。


然后我们就可以依照这个Dockfile去建立一个镜像,因为目的是要在“centos环境下建立一个redis”,那么我们这个镜像的名字就叫作lccentos/redis,具体操作就是在redis-test文件夹下执行#docker build -t lccentos/redis .


然后根据这个镜像需要制作一个容器,容器的名字就叫redisforcentos,那么命令就是:#docker run -d -p 6379 --name redisforcentos lccentos/redis


然后我们#docker ps -a看一下效果。

wKioL1imopqwKls1AAA5_Wn8hvY175.png

可见宿主机的32774端口和容器的6379端口“融为一体”,这个时候,我们测试一下这个redisforcentos的容器是否已经正常启动了redis。

wKioL1impCGjd-C3AAAULI1m2HY604.png


而且对于Docker来说,可以多个docker对应宿主机的同一个端口,比如我这台机器搞了两个redis,两个容器都可以指向6379的端口,如图:

wKiom1ir50fAGR8gAABP9sTAKOA169.png

这里也说一下Dockerfile的优化原则:

1)ADD和VOLUME应该放在Dockerfile底部,因为它们相对比yum安装那些变化的更勤;

2)EXPOSE可以一口气对应多个端口,比如

EXPOSE 80 2003 2004 7002

的效果跟下面的效果一样;

EXPOSE 80 
EXPOSE 2003 
EXPOSE 2004 
EXPOSE 7002

3)ADD的操作应该放在Dockerfile的最下面;




参考资料:http://dockone.io/article/255?spm=5176.100239.blogcont40494.25.8RXqDX



 本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1898855


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
4月前
|
NoSQL 关系型数据库 Redis
Docker的通俗理解和通过宿主机端口访问Redis容器的实例
本文目标:引导初学者入门Docker,理解镜像、容器和宿主机概念,学习常用Docker命令,特别是如何创建并从Redis容器通过宿主机端口访问。 关键点: - Docker核心:镜像(类)、容器(实例)、宿主机(运行环境)。 - `docker pull` 拉取镜像,如 `redis:3.0`。 - `docker run -d --name` 后台运行容器,如 `my-redis`。 - `-p` 参数做端口映射,如 `6379:6379`。 - `docker exec -it` 交互式进入容器,如 `bash` 或执行命令。
255 4
|
14天前
|
消息中间件 NoSQL Kafka
Flink-10 Flink Java 3分钟上手 Docker容器化部署 JobManager TaskManager Kafka Redis Dockerfile docker-compose
Flink-10 Flink Java 3分钟上手 Docker容器化部署 JobManager TaskManager Kafka Redis Dockerfile docker-compose
30 4
|
1月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
2月前
|
缓存 开发者 Docker
Dockerfile是Docker容器化过程中的核心组件,它允许开发者以一种可重复、可移植的方式自动化地构建Docker镜像
【8月更文挑战第19天】Dockerfile是构建Docker镜像的脚本文件,含一系列指令定义镜像构建步骤。每条大写指令后跟至少一个参数,按序执行,每执行一条指令即生成新的镜像层。常用指令包括:FROM指定基础镜像;RUN执行构建命令;EXPOSE开放端口;CMD指定容器启动行为等。优化策略涉及减少镜像层数、选择轻量基础镜像、利用缓存及清理冗余文件。示例:基于Python应用的Dockerfile包括设置工作目录、复制文件、安装依赖等步骤。掌握Dockerfile有助于高效自动化构建镜像,加速应用部署。
32 1
|
4月前
|
安全 持续交付 Docker
深入探索Dockerfile:构建容器化应用的秘密武器
深入探索Dockerfile:构建容器化应用的秘密武器
|
4月前
|
监控 NoSQL Redis
Redis哨兵,Redis哨兵核心功能如何一个云服务器完成6个节点的搭建-docker什么是docker是否可以把六个容器,都写到同一个ym配置中,一次都启动,不就直接保证互通问题了吗?
Redis哨兵,Redis哨兵核心功能如何一个云服务器完成6个节点的搭建-docker什么是docker是否可以把六个容器,都写到同一个ym配置中,一次都启动,不就直接保证互通问题了吗?
|
5月前
|
NoSQL Redis Docker
Mac上轻松几步搞定Docker与Redis安装:从下载安装到容器运行实测全程指南
Mac上轻松几步搞定Docker与Redis安装:从下载安装到容器运行实测全程指南
829 0
|
2天前
|
存储 Docker 容器
docker中挂载数据卷到容器
【10月更文挑战第12天】
13 5
|
7天前
|
存储 运维 云计算
探索Docker容器化:从入门到实践
在这个快速发展的云计算时代,Docker容器化技术正在改变应用的开发、部署和管理方式。本文旨在为初学者提供一个关于Docker的全面入门指南,并通过实践案例展示Docker在实际开发中的应用。我们将一起了解Docker的核心概念、基本操作、网络和存储,以及如何构建和部署一个简单的Web应用。无论你是开发者还是运维人员,本文都会帮助你快速掌握Docker的核心技能。
|
3天前
|
存储 测试技术 开发者
docker中将数据卷挂载到容器
【10月更文挑战第11天】
12 3