dockerfile 构建 redis 镜像

Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令。Docker程序将这些Dockerfile指令翻译真正的Linux命令。Dockerfile有自己书写格式和支持的命令,Docker程序解决这些命令间的依赖关系,类似于Makefile。Docker程序将读取Dockerfile,根据指令生成定制的image。相比image这种黑盒子,Dockerfile这种显而易见的脚本更容易被使用者接受,它明确的表明image是怎么产生的。有了Dockerfile,当我们需要定制自己额外的需求时,只需在Dockerfile上添加或者修改指令,重新生成image即可,省去了敲命令的麻烦。

dockerfile 有两个步骤
步骤1:用来将 redis 包丢到 docker.showjoy.net/centos 镜像,并且安装一些常用的包及修改redis的一些配置,等配置好之后进行 docker commit
步骤2:设置 redis 启动的一些命令参数


下面通过 dockerfile 创建 redis 镜像

一、准备基础镜像 docker.showjoy.net/centos

dockerfile 构建 redis 镜像_第1张图片


二、准备 redis 包 和 dockerfile

dockerfile 构建 redis 镜像_第2张图片

dockerfile 文件内容:

dockerfile 构建 redis 镜像_第3张图片


三、构建 redis-test 镜像

docker build -t redis-test . 这里的 . 表示dockerfile文件在当前目录

dockerfile 构建 redis 镜像_第4张图片


四、启动 redis-test 镜像,进入 docker container 将添加的 redis 进行安装,并且设置参数。(安装 redis 步骤略,这边需要注意的是 redis 密码和 bind 参数,注释掉表示监听所有地址)

这里写图片描述


五、在容器中安装配置完 redis 后退出,重新将现有的 redis 容器提交成一个新的镜像

dockerfile 构建 redis 镜像_第5张图片


六、通过 dockerfile 再次将 redis-test1 生成为 docker.showjoy.net/redis

看看 dockerfile ,FROM 已经从 docker.showjoy.net/centos 变为刚才提交的镜像,redis-test1,ADD redis 也已经去掉,变为 CMD。表示启动该容器后执行的命令:

dockerfile 构建 redis 镜像_第6张图片

下面构建新的镜像 docker.showjoy.net/redis

dockerfile 构建 redis 镜像_第7张图片


七、运行 docker.showjoy.net/redis 镜像,生成 redis 容器,并且查看日志,可以看到 docker 容器已经成功运行。

[root@docker redis]# docker run -dit --name redis -p 6379:6379 --restart=always -v /etc/localtime:/etc/localtime:ro docker.showjoy.net/redis
7f1a65c270af2360d4391a98af21783209aa913df54c2a255ef9b3645babcc68
[root@docker redis]# docker ps -a
CONTAINER ID        IMAGE                      COMMAND                   CREATED             STATUS              PORTS                    NAMES
7f1a65c270af        docker.showjoy.net/redis   "/bin/sh -c '\"/usr/lo"   3 seconds ago       Up 1 seconds        0.0.0.0:6379->6379/tcp   redis
ae8e32d252bc        bca04f698ba8               "docker-registry"         18 hours ago        Up 18 hours         0.0.0.0:5000->5000/tcp   registry
[root@docker redis]# docker logs redis
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 3.2.0 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 1
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

1:M 19 May 16:27:50.591 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
1:M 19 May 16:27:50.591 # Server started, Redis version 3.2.0
1:M 19 May 16:27:50.591 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
1:M 19 May 16:27:50.591 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
1:M 19 May 16:27:50.591 * The server is now ready to accept connections on port 6379

八、通过客户端 Redis Desktop Manager 来连接 redis 容器,如下图,连接成功

dockerfile 构建 redis 镜像_第8张图片

dockerfile 构建 redis 镜像_第9张图片

你可能感兴趣的:(docker)