docker容器中安装vim问题解决

目录
  • 故事的开始
  • 装个 vim 编辑 hadoop-hive.env
  • 大意了没有闪, 居然是 debian
  • 其他方法
  • 总结

故事的开始

很多互联网公司, 业务走过 0-1 的野蛮生长之后必定需要精细化管理; 尤其是 面向自己用户 这一块, 你需要像个渣男一样了解你的用户特点 / 需要 / 才知道怎样哄人家开心; 人家才会死心塌地跟着你.

如果是 面向企业(to B)用户, 问题很简单: 去拜访不同的合作公司/业内翘楚, 大家都是带有目的性, 互惠互利一来二去就清楚了;

但像我们这种 面向用户(to C) 用户, 如果随机抽样用户邀请到公司;问券调查;且不说一次性, 抽样用户数据是否具有代表性? 用户提出的问题是否是团队的目前发展方向?

所以最近的工作在原有业务分析上再加一层: 用户标签. 标记用户在你应用中行为, 分析用户特点, 使用习惯

中间过程中需要大数据, 所以自己做测试开发选择使用 docker 搭建环境, 中间遇到安装 vim 问题记录

装个 vim 编辑 hadoop-hive.env

在 centos 7 上使用 docker 安装 hive 镜像

$ docker ps
CONTAINER ID   IMAGE                                                  COMMAND                  PORTS                                                      NAMES
dc387ff5c56d   bde2020/hive:2.1.0-postgresql-metastore                "entrypoint.sh /bin/…"   0.0.0.0:10000->10000/tcp, 10002/tcp                        hive-server

$ docker exec -it dc387ff5c56d /bin/bash

# vim 编辑 hadoop-hive.env
/opt# vi hadoop-hive.env
bash: vi: command not found

# 镜像讲究纯净可以理解, 编译安装吧
/opt# yum install vim
bash: yum: command not found
/opt# rpm
bash: rpm: command not found

# 还是 curl 靠得住
/opt# wget http://yum.baseurl.org/download/3.2/yum-3.2.28.tar.gz
bash: wget: command not found
/opt# rz
bash: rz: command not found

/opt# curl
curl: try 'curl --help' or 'curl --manual' for more information
/opt# curl -o yum-3.2.28.tar.gz http://yum.baseurl.org/download/3.2/yum-3.2.28.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  864k  100  864k    0     0   276k      0  0:00:03  0:00:03 --:--:--  667k

# 你也纯净得太过分了吧
/opt# tar -zxvf yum-3.2.28.tar.gz
/opt/yum-3.2.28# ls
AUTHORS  ChangeLog  INSTALL   PLUGINS  TODO  callback.py  docs output.py  rpmUtils  test      yum  yum.spec yummain.py
COPYING  FAQ     Makefile  README   bin   cli.py   etc po    shell.py  utils.py  yum-updatesd.py yumcommands.py

/opt/yum-3.2.28# make
bash: make: command not found

这时~ bash: make: command not found 嗯? 连个 make 编译命令都没有. 现在容器都 玩得都这么野 的了吗

大意了没有闪, 居然是 debian

不对, 会不会镜像不是 centos 7 的

# 查看 linux 内核版本
/opt/yum-3.2.28# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 7 (wheezy)"
NAME="Debian GNU/Linux"
VERSION_ID="7"
VERSION="7 (wheezy)"
ID=debian
ANSI_COLOR="1;31"
HOME_URL="http://www.debian.org/"
SUPPORT_URL="http://www.debian.org/support/"
BUG_REPORT_URL="http://bugs.debian.org/"

PRETTY_NAME="Debian GNU/Linux 7 (wheezy)" 哟西好家伙, 居然是 debian. 让我查查 apt-get 安装命令

/opt/yum-3.2.28# apt-get install vim
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: 

我就知道事情并不简单 Unable to locate package vim 国内通常是因为 Debian 使用的 apt-get 源在国外需要翻墙导致. 配置国内镜像就好

# 将原 `apt-get`源文件备份, 再配置
/# mv /etc/apt/sources.list /etc/apt/sources.list.bak
deb http://mirrors.163.com/debian/ jessie main non-free contrib
/opt/yum-3.2.28# echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >/etc/apt/sources.list

/opt/yum-3.2.28# echo "deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list

/opt/yum-3.2.28# echo "deb-src http://mirrors.163.com/debian/ jessie main non-free contrib" >>/etc/apt/sources.list

/opt/yum-3.2.28# echo "deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list

# 更新 apt-get, 安装 vim
/opt/yum-3.2.28# apt-get update
/opt/yum-3.2.28# apt-get install vim

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
  libc6 vim-common vim-runtime
Suggested packages:
  glibc-doc locales ctags vim-doc vim-scripts
The following NEW packages will be installed:
  vim vim-common vim-runtime
The following packages will be upgraded:
  libc6
1 upgraded, 3 newly installed, 0 to remove and 179 not upgraded.
Need to get 10.8 MB of archives.
After this operation, 29.6 MB of additional disk space will be used.
Do you want to continue [Y/n]? y

其他方法

除此之外, 如果只是简单的 配置文件替换. 还能通过在宿主机 编辑好 hadoop-hive.env 配置文件, docker cp hadoop-hive.env dc387ff5c56d:/opt 复制到容器指定文件夹下.

总结

安装 docker 镜像是需要留意系统版本内核; 搞错版本 / 版本号和 docker 不匹配容器出现问题

到此这篇关于docker容器中安装vim问题解决的文章就介绍到这了,更多相关docker安装vim内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 解决Docker容器没有vim命令的方法

    发现问题 今天在尝试修改Docker容器内文件时, 发现容器内并没有vim命令, 返回了: vim my.cnf bash: vim: command not found 本篇文章就来记录下如何解决此问题. 解决方案 仍然在docker容器内部, 首先运行以下命令, 并耐心等待一会儿: apt-get update 完成后运行: apt-get install vim 等待安装完成后, 运行以下命令, 验证是否安装成功: vim 如果返回了类似以下界面则证明vim安装成功: VIM安装成功返回

  • docker容器中安装vim问题解决

    目录 故事的开始 装个 vim 编辑 hadoop-hive.env 大意了没有闪, 居然是 debian 其他方法 总结 故事的开始 很多互联网公司, 业务走过 0-1 的野蛮生长之后必定需要精细化管理; 尤其是 面向自己用户 这一块, 你需要像个渣男一样了解你的用户特点 / 需要 / 才知道怎样哄人家开心; 人家才会死心塌地跟着你. 如果是 面向企业(to B)用户, 问题很简单: 去拜访不同的合作公司/业内翘楚, 大家都是带有目的性, 互惠互利一来二去就清楚了; 但像我们这种 面向用户(t

  • 在docker容器中安装vi命令的简单操作

    在使用docker容器时,有时候里边没有安装vim,敲vim命令时提示说:vim: command not found,这个时候就需要安装vim,可是当你敲apt-get install vim命令时,提示: Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package vim 这时候需要敲: apt-get update 这

  • 详解docker 允许主机ssh连接到docker容器中

    在docker容器中,安装好ssh: 1)替换掉容器中的安装源为163源 2)安装ssh服务 apt-get update apt-get install openssh-server 3)添加目录,修改ssh配置文件 mkdir -p /var/run/sshd vim /etc/pam.d/sshd 找到 session    required     pam_loginuid.so 这一行,将它注释掉 4)添加要链接过来的主机公钥 将公钥放到/root/.ssh/authorized_ke

  • docker容器中布置静态网站的实现

    服务器布置 这里推荐使用云服务器(阿里云.华为云.腾讯云)可以免费使用几天.在我们买了服务器后会遇到如下问题: 本地电脑ping服务器主机发现ping不通,请求超时 我们需要在管理服务器的界面找到安全组那一栏,然后在安全组出入都要加入icmp这个,建议直接一键添加所有. 然后我们在本地电脑就可以ping通服务器了. docker安装 在布置好云服务器后,我们使用apt-get update, apt-get upgrade 更新信息. 然后,我们输入docker,出现如下错误: 接着,我们按照通

  • 深入浅析Docker容器中的Patroni

    目录 创建镜像 文件结构 DockerFile entrypoint.sh function generatefile 构建镜像 运行镜像 总结 附图 上一篇文章向大家介绍了Repmgr的搭建过程,实现了自动切换,今天将向大家介绍,如何搭建容器下的Patroni集群环境,Patroni作为开箱即用PG高可用工具,越来越多的被各个厂商用于云环境下使用. patroni基本架构如图所示: etcd作为分布式注册中心.进行集群选主工作:vip-manager为主节点设置漂移IP:patroni负责引导

  • 在Docker容器中不需要运行sshd的原因浅析

    当开始使用Docker时,人们经常问:"我该如何进入容器?",其他人会说"在你的容器里运行一个SSH服务器".但是,从这篇博文中你将会了解到你根本不需要运行SSHd守护进程来进入你的容器.当然,除非你的容器就是一个SSH服务器. 运行SSH服务器是很想当然的,因为它提供了进入容器的简便方式.在我们公司基本上每个人都最少使用过一次SSH.我们中有很大一部分人每天都会使用它,并且他们很熟悉公钥与私钥,无密码登录,密钥代理,甚至有时会使用端口转发和其他不常用的功能.正因如

  • 详解挂载运行的docker容器中如何挂载文件系统

    前言 感觉最近很多人都在问docker相关的问题,关于怎么操作一个已经启动的docker容器的文件系统,首先我发现这非常困难,因为 mnt的命名空间. 为了登录进入一个已经启动的docker容器,我们需要这么做: 使用nsenter来在临时挂载点上挂载整个docker容器的文件系统. 创建一个特定目录的绑定挂载来当作卷来使用. 卸载临时挂载. 好吧,开始实践. 启动一个名为charlie的docker实例: $ docker run --name charlie -ti ubuntu bash

  • 如何在docker容器内部安装kibana分词器

    步骤: 1.在虚拟机目录下新建docker-compose.yml文件,然后进入yml文件编辑 vi docker-compose.yml 2.在yml文件中添加如下代码: version: "3.1" services: elasticsearch: image: daocloud.io/library/elasticsearch:6.5.4 restart: always container_name: elasticsearch ports: - 9200:9200 #将分词器映

  • docker容器中切换用户,提示权限不足的解决

    docker容器中切换用户,提示权限不足: 解决办法: 启动容器是使用特权启动: docker run -i -t --privileged -v /home/dora:/home/dora centos_ora /bin/bash 补充知识:linux下docker使用普通权限运行 linux下安装docker默认会安装为名为docker的用户才能运行的权限,使用时需要切换用户,很不方便 为了直接使用命令,需要将当前用户加入docker组 sudo usermod -aG docker you

  • 在docker容器中调用和执行宿主机的docker操作

    首先这个帖子,献给docker新手.当然如果你是一个老手,文中分割线后的操作方法也是一种思路. 首先说一下,如何在docker中执行宿主机的docker操作,我们管它叫docker in docker. 至于为什么要在docker中操作宿主机的docker,优点不言而喻,你既可以将你的具体需求容器化部署,又不用直接在宿主机上安装(假设我们没有办法在docker中操作宿主机的docker,那么我们只能将这样的软件程序直接安装到宿主机上,这样显然是不利于管理和维护的). 实现这种需求,其实非常简单,

随机推荐