Docker学习:通过Dockerfile自定义Redis本地容器(高级应用)

前言

本讲是从Docker系列讲解课程,单独抽离出来的一个小节,前些章节主要是理论+实战,自本章节开始,进入Docker高级应用。

浏览本文前,建议了解Dockerfile核心命令的使用Dockerfile的优化

掌握Dockerfile的使用后,有助于后期k8s中的yaml文件的学习,它们都是通过编写配置文件完成容器的自动化部署。

一、通过Dockerfile自定义Redis本地容器

1.在redis官网下载指定版本源码包并上传到宿主机指定文件夹内

附注:redis官网 、redis-6.0.6.tar.gz下载

cd && mkdir -p test/image/docker-redis  #切换到根目录并创目录
cd test/image/docker-redis  #切换到镜像存放目录
rz  #上传已下载好的redis源码包

2.编辑Dockerfile

ls 
vim Dockerfile
FROM centos
RUN ["yum","install","-y","gcc","gcc-c++","net-tools","make"]   # 安装Reids依赖的运行环境
WORKDIR /usr/local
ADD redis-6.0.6.tar.gz .                                        # 解压源码包到当前WORKDIR
WORKDIR /usr/local/redis-6.0.6/src
RUN make && make install                                        # 在解压后的src目录编译和安装
WORKDIR /usr/local/redis-6.0.6
RUN ["mkdir","/etc/redis"] && ["cp","redis.conf","/etc/redis/6379.conf"]   # 复制一份配置文件到etc下(尽量不去修改原配置文件)
EXPOSE 7000                                                     # 指定容器对外暴露的端口
CMD ["../bin/redis-server","redis.config"]                      # 指定配置文件启动Redis服务

3.docker build -t 构建容器

docker build -f Dockerfile -t succ.com/dockr_redis .

特别提示:如果执行docker build命令时,dockerfile本身就在当前目录,可以不用-f指定dockerfile的位置;后面的镜像名称也是可以根据实际情况自定义的。尾部的.,如果你对他感兴趣,点击进入(查看第三章节)。 

如果你的Dockerfile没有语法错误,正常的情况可以看到下面的提示构建成功,并返回镜像的id 

4.docker images 查看容器列表

docker images  #查看并验证自己构建的镜像是否构建成功

 可以看到自己构建的镜像构建成功了

5.docker run 运行redis容器 

docker run -d --name redis -p 7000:6379 succ.com/dockr_redis 

6.docker ps 查看容器id后 exec 进入容器

docker ps -a
docker exec -it redis /bin/bash

二、使用docker官网自带的Redis容器

实际工作中,很少自定义Redis镜像,直接到官方查找镜像名称,通过docker pull 官方镜像名称即可。

docker pull reids:6.2.6    #拉取指定redis版本镜像
docker images              #查看镜像列表
docker run -d redis:6.2.6  
docker exec -it a9 /bin/bash  #根据容器ID首字母,进入容器内部
cd /usr/local/bin/
ls
redis-cli   #运行redis客户端
set k2 hell
get k2

总结

dockerfile的使用,相对yaml比较简单,主要是FROM指定基准镜像,然后通过ADD或者COPY把已下载好的安装包从宿主机添加到容器中,之后就是通过RUN执行一些命令,最后使用CMD命令,启动容器服务(从而在使用镜像时,可以直接通过docker run 命令运行镜像时自动启动容器的内部服务)。

当然实际工作中,通常会直接拉去官方镜像,然后在此镜像基础上做一些修改、配置、集群等操作,本文不在深入扩展,主要介绍Dockerfile的简单使用。

尾言

本讲内容是从 Docker入门到进阶里面抽离出来的内容,尽管知识点比较简单,也是docker学习路上不可或缺的一部分。希望对大家有所帮助,不当之处,望批评指正,学习路上,一起砥砺前行!

附注

猜你可能会感兴趣的内容

1、Dockerfile八大核心命令 | Dockerfile的使用

2、Dockerfile的优化

3、Docker外部浏览器访问容器 | 容器访问容器 | 访问容器的常用5种方式 | -p -P 详解

4、Docker容器五种(3+2)网络模式 | bridge模式 | host模式 | none模式 | container 模式 | 自定义网络模式详解

5、Docker容器生命周期 | kill和 stop的区别

6、Docker容器间数据挂载与共享 | 远程共享&挂载数据卷 | sshfs挂载远程volume | 容器内部通过sshfs访问远程主机


版权声明:本文为xp871038951原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。