docker容器中安裝vim問題解決

故事的開始

很多互聯網公司, 業務走過 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內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: