Docker 实战一、创建极简Redis Image

最近学习 docker,看到了这样一篇文章《Docker 的 Image 太大,怎么变小?》,原博客地址没找到,感兴趣的可以移步原创的开源项目

一、基本概念:

  • Docker 不是虚拟机 (切记)
  • Docker 里面的程序运行时不需要完整的操作系统!
  • CoreOS,RHEL, Ubuntu, CentOS,等等等,它们都是一个操作系统!

二、步骤

  • 使用 Busybox 的 Install 命令创建一个最小化的系统环境
  • 删除不必要的各种系统文件,具体哪些是不必要的,那就得需要具体程序具体分析,楼主花了大量时间来分析每个程序,现在楼主几乎可以把这些APP的依赖项倒着背出来。
  • 将这些文件打包成 rootfs.tar
  • 使用 Dockerfile 的 ADD 指令用 rootfs.tar 生成 Image

三、详细操作
1.准备工作

    #切换至 Docker 目录
    cd Docker
    #创建 redis2,mredis目录
    mkdir redis2 mredis

2.使用 Busybox 的 Install 命令创建一个最小化的系统环境

    cd redis2
    vim Dockerfile
    #文件内容如下

redis2/Dockerfile 文件内容:

FROM redis:2.8.13

USER root

RUN mkdir /rootfs
WORKDIR /rootfs
RUN mkdir bin etc dev dev/pts lib usr proc sys tmp
RUN mkdir -p usr/lib64 usr/bin usr/local/bin
RUN touch etc/resolv.conf
RUN cp /etc/nsswitch.conf etc/nsswitch.conf
RUN echo root:x:0:0:root:/:/bin/sh > etc/passwd
RUN echo root:x:0: > etc/group
RUN ln -s lib lib64
RUN ln -s bin sbin
#busybox install
ADD https://busybox.net/downloads/binaries/1.21.1/busybox-x86_64 /sbin/busybox
RUN chmod +x /sbin/busybox
RUN cp /sbin/busybox bin
RUN busybox --install -s bin
#复制 redis-server
RUN cp /usr/local/bin/redis-server usr/bin/redis-server
#复制所需依赖
RUN bash -c "cp /lib/x86_64-linux-gnu/lib{m,dl,pthread,c}.so.* lib64"
RUN cp /lib64/ld-linux-x86-64.so.2 lib64/
RUN tar cf /rootfs.tar .

创建 rootfs.tar

# -t 标签
docker builder -t mdemo/redis2 ./
# 开启容器 并且复制到本地
docker run -itd medmo/redis2
docker cp 容器ID:/rootfs.tar ./
docker stop 容器ID

3.构建极简 redis image

cd ../mredis
vim Dockerfile

mredis/Dockerfile 文件内容:

FROM scratch
MAINTAINER zhuzq <1228676735@qq.com>
ADD rootfs.tar /
WORKDIR /data
VOLUME /data

EXPOSE 6379
ENTRYPOINT ["/usr/bin/redis-server"]
CMD ["--port", "6379"]

运行

docker build -t microbox/redis ./
# 运行容器 --appendonly yes 数据持久化
docker run -itd -p 6379:6379 -v $PWD/data:/data microbox/redis --appendonly yes
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值