docker创建redis镜像
pull redis 镜像
创建redis的镜像有几种方式,可以直接从仓库中拉取,也可以采用dockerfile文件自己编译创建。
基于已有的redis镜像,docker可以采用run,或者create->start两种方式创建容器。
1.docker run
在构建镜像,要提供访问redis的端口,-p为端口映射的
1)创建并启动,设置端口映射
[root@vm000949 ~]# docker run -p 127.0.0.1:6379:6379 -it --name="my-redis-server" -d redis
d66037100bddcd230e0c9955bdfb9b0dbae8ce4028a81534e1693ab95737c90a
[root@vm000949 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d66037100bdd redis "docker-entrypoint.sh" 6 seconds ago Up 5 seconds 127.0.0.1:6379->6379/tcp my-redis-server
docker run:重新创建一个容器并运行命令,语法如下:
Docker run [OPTIONS] IMAGES [COMMAND][ARG]
通常用的OPTIONS为:
-t 为容器分配一个伪输入终端
-I 以交互模式运行容器
-name 为容器指定名称
-d 以后台模式运行
-p 端口映射
查看端口映射情况,其中e24b3e0a7df0为redis的容器。
[root@vm000949 ~]# docker port e24b3e0a7df0
6379/tcp -> 127.0.0.1:6379
2)进入redis容器里面
docker exec -it e24b3e0a7df0 redis-cli
127.0.0.1:6379> set day newDay
OK
127.0.0.1:6379> get day
"newDay"
127.0.0.1:6379> exit
docker exec语法如下:
Docker exec [OPTIONS] CONTAINER COMMAND [ARG]
其中OPIONS包括:
-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端
这就是一个简单的创建过程,直接run就是一个创建并启动的容器。
查看当前虚拟机上的端口映射情况:
[root@vm000949 ~]# netstat -apn|grep 6379
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 2270/docker-proxy-c
上述是直接采用run方式,而更为正确的生命周期应该为:
create->start->exec
如果容器已经停止了,直接start,然后exec。采用run将会根据命令再创建一个docker
比如要重新开始,需要删除现在这个容器
[root@vm000949 ~]# docker rm 695d5f6afc27
Error response from daemon: You cannot remove a running container 695d5f6afc27415126a40384a868c751ba635df2d4d7fb578424bc1bd9167166. Stop the container before attempting removal or use -f
提示不能删除一个正在运行的容器。
[root@vm000949 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
695d5f6afc27 redis "docker-entrypoint.sh" 14 minutes ago Up 8 minutes 127.0.0.1:6379->6379/tcp ecstatic_lamarr
将该容器stop,并删除容器
[root@vm000949 ~]# docker stop 695d5f6afc27
695d5f6afc27
2.docker create
创建容器的语法与run相似
[root@vm000949 ~]# docker create -p 127.0.0.1:6379:6379 -it --name="my-redis-server" -d redis
unknown shorthand flag: 'd' in -d
See 'docker create --help'.
如果直接将run修改为create,会报错,在没有开始运行无法执行-d参数
[root@vm000949 ~]# docker create -p 127.0.0.1:6379:6379 -it --name="my-redis-server" redis
Error response from daemon: Conflict. The name "/my-redis-server" is already in use by container d66037100bddcd230e0c9955bdfb9b0dbae8ce4028a81534e1693ab95737c90a. You have to remove (or rename) that container to be able to reuse that name.
提示上次run创建的容器没有删除
[root@vm000949 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@vm000949 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d66037100bdd redis "docker-entrypoint.sh" 3 minutes ago Exited (0) About a minute ago my-redis-server
[root@vm000949 ~]# docker rm d66037100bdd
D66037100bdd
删除后重新创建:
[root@vm000949 ~]# docker create -p 127.0.0.1:6379:6379 -it --name="my-redis-server" redis
2596bd8886b4095dc80e23315a5e073addb50fc9aa959456e026e6ca31676d28
[root@vm000949 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2596bd8886b4 redis "docker-entrypoint.sh" 8 seconds ago Created my-redis-server
启动容器:
[root@vm000949 ~]# docker start my-redis-server
my-redis-server
[root@vm000949 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2596bd8886b4 redis "docker-entrypoint.sh" About a minute ago Up 3 seconds 127.0.0.1:6379->6379/tcp my-redis-server
进入容器:
[root@vm000949 ~]# docker exec -it my-redis-server redis-cli
127.0.0.1:6379> exit
从上面两种方式可以看出create->start->exec的生命周期比较的直观。其中,Docker run命令包括create和start两个生命周期。
最后:docker的日志文件放在/var/lib/docker/containers/下,每个docker都有对应的文件,cat 其-json.log文件获得日志文件.在磁盘空间中,日志文件也许会占用很大的空间,就需要进行清理。
docker创建redis镜像的更多相关文章
- Docker 创建 Redis 容器
Docker 创建 Redis 容器 # 配置文件映射: # -v /root/redis/redis.conf:/etc/redis/redis.conf # 数据目录映射: # -v /root/ ...
- docker创建Redis集群
开始工作: yum install wegt ##安装下载工具 yum install net-tools ##安装网络工具 yum install tree ##安装tree命令(方便查看集群配置文 ...
- docker创建redis容器
1.拉取最新的redis镜像 docker pull redis; 2.创建存放redis数据的目录 mkdir /redis/data 3.查询redis镜像id docker images; RE ...
- 使用docker创建redis容器
1.拉取redis镜像
- 验证docker的Redis镜像也存在未授权访问漏洞
看到了这篇老外的博客:Over 30% of Official Images in Docker Hub Contain High Priority Security Vulnerabilities于 ...
- docker创建nginx镜像
注意:此处不是用的dockerfile创建的镜像,只是用来搞一搞 首先你的系统里面要安装docker,这里就不重复介绍了,可以看之前的文章: 然后再搞一个基础镜像 docker pull regist ...
- Docker创建私有镜像仓库
Docker官方提供了一个工具docker-registry,可以借助这个工具构建私有镜像仓库: 1.拉取registry镜像 # docker pull registry//可以使用 docker ...
- docker 创建本地镜像服务器
1.docker pull registry //下载registry 镜像,registry 为docker 官方提供的一个镜像, 我们可以用它来创建本地的docker私有仓库. docker:/r ...
- docker 创建mysql镜像,并成功进行远程连接
1.安装 1.1 拉取镜像 docker pull mysql 拉取成功可以验证一下 docker images 1.2 创建并启动一个mysql容器 docker run --name ly-mys ...
随机推荐
- Kubernetes资料收集
官方文档 https://kubernetes.io/docs/home/?path=users&persona=app-developer&level=foundational 视频 ...
- CoacoaPods安装使与使用超级详细教程
对于一个iOS开发的初学者来说,并不知道第三方类库的存在,知道了也不知道如何使用,那么下面便来介绍一下使用方法. iOS开发常用的第三方类库是GitHub:https://github.com/ 在上 ...
- js 单引号和双引号的使用注意事项
前言: 刚入行时,对单双引号没有过研究,使用时也是碰到什么用什么,后来慢慢遇到引号嵌套时报错,才了解问题.因之前的文章稍显混乱,现重新编辑,帮助需要的人儿. 正文: 1.一般情况下(没有嵌套)在js中 ...
- 关于Django中JsonResponse返回中文字典编码错误的解决方案
解决方案:JsonResponse(data, json_dumps_params={'ensure_ascii':False}) ! data是需要渲染的字典 def master(request) ...
- Angular.js进阶
1.常用指令 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UT ...
- 分享一个hybrid框架ionic
ionic 是一个 HTML5 应用程序开发框架. 可以使用 HTML.CSS 和 Javascript 构建接近原生体验的移动应用程序.具有速度快,界面现代化.美观等特点.下面一起看一下如何使用 安 ...
- js数组去重(多种写法)
最基本的写法 使用indexOf() var arr = [1,1,5,77,32,54,2,4,5,2,2,4,52,2,2,2,2,2] //比较常规的语法使用indexOf来判断是否已经存在 g ...
- Git 原理入门
Git 是最流行的版本管理工具,也是程序员的必备技能之一. 即使天天使用它,很多人也未必了解它的原理.Git 为什么可以管理版本?git add.git commit这些基本命令,到底在做什么,你说得 ...
- ziplist之详细分析
压缩列表ziplist ziplist是一种连续,无序的数据结构.压缩列表是 Redis 为了节约内存而开发的, 由一系列特殊编码的连续内存块组成的顺序型(sequential)数据结构. 组成 属性 ...
- ASP.NET Core获取微信订单数据
前几天对接了一波微信的订单,分享出来 1.生成签名 根据微信要求把appid.商户号.随机数.和订单号还有商户平台的密钥拼接成一个字符串然后进行MD5加密 2.拼接请求XML 然后用拼接好的XML向微 ...