关键词:Docker、Ubuntu、Vim


  • 简单解决Docker中的镜像没有vim的问题(同时解决apt-get下载很慢的问题)
  • 问题描述
  • 解决办法
  • 1.进行apt-get
  • 2.添加国内的源


简单解决Docker中的镜像没有vim的问题(同时解决apt-get下载很慢的问题)

问题描述

当我们使用Docker的时候,我们往往会实例化镜像,形成容器。但有时,我们需要修改
比如:我们实例化了Nginx容器,想进入容器修改容器中的配置文件。

Docker提供了进入容器的方法。

# 进入docker容器
sudo docker exec -it eda2222(容器名orID) /bin/bash

但是当我们在容器中想使用vim,却会发现容器中是没有vim的。

bash: vim: command not found

原因也很简单:
Nginx镜像,是以Ubuntu/CentOS为基础镜像的,容器中的shell也由基础镜像提供。
但是这里的Ubuntu其实是精简版的,仅提供了最基础的运行环境,没有vim一类的东西。

解决办法

1.进行apt-get

我们首先想到的办法肯定是安装vim,但是会发现这两个过程需要半小时。
如果愿意等待的话,显然执行这两行代码就可以解决问题。

# 先更新我们的包管理工具
apt-get update
# 然后安装我们需要的vim
apt-get install vim

2.添加国内的源

(1)一般来说,我们只需要修改/etc/apt/sources.list,就可以添加国内的源,但是我们没有vim,还是没办法修改。

(我们可以用cat命令打印出来看一下,确实只有debian的源,怪不得速度慢)

docker 切换源 没有vi docker容器没有vi_docker 切换源 没有vi


(2)所以,我们可以使用原始的echo命令,向文件中直接添加对应的国内源即可。粘贴下面的代码,直接执行即可。

# 向/etc/apt/sources.list添加网易的源
echo 'deb http://mirrors.163.com/debian/ jessie main non-free contrib' >> /etc/apt/sources.list && \
echo 'deb http://mirrors.163.com/debian/ jessie-updates main non-free contrib' >> /etc/apt/sources.list && \
echo 'deb http://mirrors.163.com/debian-security/ jessie/updates main non-free contrib' >> /etc/apt/sources.list

然后,我们就可以返回第一步,进行apt-get 即可。到此大功告成。

(补充)如果不知道echo的同学,可以百度一下,它是向文件中写入内容的Linux命令。我列出了常见的两种用法。

# 1,覆盖型写法 (文件里原来的内容被覆盖)
echo 'aaa' > a.txt
# 2,添加型写法 (新内容添加在原来内容的后面)
echo 'aaa' >> a.txt

这里其实还有个小坑,为什么不用阿里的源?
首先,我添加过阿里的源,但是在apt-get update的时候,阿里的源报错了。
来自Ubuntu的提示:the public key is not available
在排除权限等常见的坑以后,判断应该是Docker提供的精简Ubuntu,在阿里的源下载验证无法通过。
所以,这里推荐使用网易的源,阿里/中科大/清华的源有几率报错。

最后的话:这其实是一个非常简单的问题,但是非常常见,而且解决起来很麻烦。因此,有比较简单省心的方法(直接粘贴运行代码即可),还是分享出来。

所以就水了一篇文章了(但还是蛮实用的)。

欢迎大家一起交流~