如何利用dockerfile构建一个reids镜像错误 请教大牛帮忙解决 yum怎么不识别呀?


步骤
1 下载 别人搭建好的 redis镜像
docker pull index.alauda.cn/library/redis   


2 自己在centos环境上构建一个dockerfile ,因为我想在上面提供其他功能 ssh gdb
我想自己可以attach 进去 gdb 一个进程

公共镜像版本

reids docker pull index.alauda.cn/library/redis来源

FROM redis

镜像的作者

MAINTAINER wang_cyi <wang_cyi@outlook.com>

RUN yum update -y

01 c++开发环境

RUN yum -y install gcc gcc-c++ autoconf  zlib zlib-devel glibc glibc-devel glib2 glib2-devel l curl curl-devel
RUN yum -y install gdb git  net-tools tcpdump strace valgrind

02 安装openssh-server

RUN yum install -y openssh-server sudo
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config

添加测试用户admin,密码admin,并且将此用户添加到sudoers里

RUN useradd admin  
RUN echo "admin:admin" | chpasswd  
RUN echo "admin   ALL=(ALL)       ALL" >> /etc/sudoers 


问题出现了
在执行

[root@localhost docker]# ./build.sh
Sending build context to Docker daemon 4.096 kB
Step 0 : FROM redis
---> e65f97c3eeb6
Step 1 : MAINTAINER wang_cyi <wang_cyi@outlook.com>
---> Using cache
---> d57e0176fc0c
Step 2 : RUN yum -y install gcc gcc-c++ autoconf zlib zlib-devel glibc glibc-devel glib2 glib2-devel l curl curl-devel
---> Running in 492db71e7d34
/bin/sh: 1: yum: not found
The command '/bin/sh -c yum -y install gcc gcc-c++ autoconf zlib zlib-devel glibc glibc-devel glib2 glib2-devel l curl curl-devel' returned a non-zero code: 127


yum存在 说明redis环境 不是centos 这个怎么办?

redis来源:
https://hub.alauda.cn/repos/library/redisX37X
已邀请:

oilbeater - 北大学渣@灵雀云

赞同来自: 王传义


redis 使用的 base image 是 debian 的,你可以用 apt-get 来安装相关软件,或者利用一个 centos 的base image 来构建你自己的镜像。

此外 FROM 的时候最好直接 FROM index.alauda.cn/library/redis 这样会快一些。否则不带任何域名信息 build 时会去 dockerhub 进行校验,网络出问题会很慢

metavige_tw

赞同来自: 王传义


官方的 redis 鏡像本身不是 based CentOS,所以不會有 yum 安裝在上面
就算你的 docker engine Host 是在 CentOS 上,你在 docker container 裡面執行也不能執行 yum
這是 docker 的基本觀念,請先了解

如果你想用 index.alauda.cn/library/redis 這個 Base Image
你的 Dockerfile 就應該寫 FROM index.alauda.cn/library/redis

而不是 FROM redis

先確認你本地端用 docker images 看到的 image name 是什麼在用

王传义

赞同来自:


1 FROM index.alauda.cn/library/redis 我已经下载到本地了就不需要了
from优先从本地获取吧! 这个跟build 有关系吗?
2 我虚拟机上是centos系统 我用redis 使用的 base image 是 重新构建dockerfile 然后用centos命令肯定不行 现在改为 centos镜像了

王传义

赞同来自:


【已经解决】我查看index.alauda.cn/library/redis 是不是自己编译的 而是抄袭别人的
根本不自从centos 查看官方的 dockerfile 然后在上面修改

要回复问题请先登录注册