前言
本讲是从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的使用
3、Docker外部浏览器访问容器 | 容器访问容器 | 访问容器的常用5种方式 | -p -P 详解
4、Docker容器五种(3+2)网络模式 | bridge模式 | host模式 | none模式 | container 模式 | 自定义网络模式详解
5、Docker容器生命周期 | kill和 stop的区别
6、Docker容器间数据挂载与共享 | 远程共享&挂载数据卷 | sshfs挂载远程volume | 容器内部通过sshfs访问远程主机