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镜像的更多相关文章

  1. Docker 创建 Redis 容器

    Docker 创建 Redis 容器 # 配置文件映射: # -v /root/redis/redis.conf:/etc/redis/redis.conf # 数据目录映射: # -v /root/ ...

  2. docker创建Redis集群

    开始工作: yum install wegt ##安装下载工具 yum install net-tools ##安装网络工具 yum install tree ##安装tree命令(方便查看集群配置文 ...

  3. docker创建redis容器

    1.拉取最新的redis镜像 docker pull redis; 2.创建存放redis数据的目录 mkdir /redis/data 3.查询redis镜像id docker images; RE ...

  4. 使用docker创建redis容器

    1.拉取redis镜像

  5. 验证docker的Redis镜像也存在未授权访问漏洞

    看到了这篇老外的博客:Over 30% of Official Images in Docker Hub Contain High Priority Security Vulnerabilities于 ...

  6. docker创建nginx镜像

    注意:此处不是用的dockerfile创建的镜像,只是用来搞一搞 首先你的系统里面要安装docker,这里就不重复介绍了,可以看之前的文章: 然后再搞一个基础镜像 docker pull regist ...

  7. Docker创建私有镜像仓库

    Docker官方提供了一个工具docker-registry,可以借助这个工具构建私有镜像仓库: 1.拉取registry镜像 # docker pull registry//可以使用 docker ...

  8. docker 创建本地镜像服务器

    1.docker pull registry //下载registry 镜像,registry 为docker 官方提供的一个镜像, 我们可以用它来创建本地的docker私有仓库. docker:/r ...

  9. docker 创建mysql镜像,并成功进行远程连接

    1.安装 1.1 拉取镜像 docker pull mysql 拉取成功可以验证一下 docker images 1.2 创建并启动一个mysql容器 docker run --name ly-mys ...

随机推荐

  1. Kubernetes资料收集

    官方文档 https://kubernetes.io/docs/home/?path=users&persona=app-developer&level=foundational 视频 ...

  2. CoacoaPods安装使与使用超级详细教程

    对于一个iOS开发的初学者来说,并不知道第三方类库的存在,知道了也不知道如何使用,那么下面便来介绍一下使用方法. iOS开发常用的第三方类库是GitHub:https://github.com/ 在上 ...

  3. js 单引号和双引号的使用注意事项

    前言: 刚入行时,对单双引号没有过研究,使用时也是碰到什么用什么,后来慢慢遇到引号嵌套时报错,才了解问题.因之前的文章稍显混乱,现重新编辑,帮助需要的人儿. 正文: 1.一般情况下(没有嵌套)在js中 ...

  4. 关于Django中JsonResponse返回中文字典编码错误的解决方案

    解决方案:JsonResponse(data, json_dumps_params={'ensure_ascii':False}) ! data是需要渲染的字典 def master(request) ...

  5. Angular.js进阶

    1.常用指令 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UT ...

  6. 分享一个hybrid框架ionic

    ionic 是一个 HTML5 应用程序开发框架. 可以使用 HTML.CSS 和 Javascript 构建接近原生体验的移动应用程序.具有速度快,界面现代化.美观等特点.下面一起看一下如何使用 安 ...

  7. js数组去重(多种写法)

    最基本的写法 使用indexOf() var arr = [1,1,5,77,32,54,2,4,5,2,2,4,52,2,2,2,2,2] //比较常规的语法使用indexOf来判断是否已经存在 g ...

  8. Git 原理入门

    Git 是最流行的版本管理工具,也是程序员的必备技能之一. 即使天天使用它,很多人也未必了解它的原理.Git 为什么可以管理版本?git add.git commit这些基本命令,到底在做什么,你说得 ...

  9. ziplist之详细分析

    压缩列表ziplist ziplist是一种连续,无序的数据结构.压缩列表是 Redis 为了节约内存而开发的, 由一系列特殊编码的连续内存块组成的顺序型(sequential)数据结构. 组成 属性 ...

  10. ASP.NET Core获取微信订单数据

    前几天对接了一波微信的订单,分享出来 1.生成签名 根据微信要求把appid.商户号.随机数.和订单号还有商户平台的密钥拼接成一个字符串然后进行MD5加密 2.拼接请求XML 然后用拼接好的XML向微 ...