问题
I have installed docker on my host virtual machine. And now want to create a file using vi
.
But it's showing me an error:
bash: vi: command not found
回答1:
login into container with the following command:
docker exec -it <container> bash
Then , run the following command .
apt-get update
apt-get install vim
回答2:
Your container probably haven't installed it out of the box.
Run apt-get install vim
in the terminal and you should be ready to go.
回答3:
The command to run depends on what base image you are using.
For Alpine, vi
is installed as part of the base OS. Installing vim
would be:
apk -U add vim
For Debian and Ubuntu:
apt-get update && apt-get install -y vim
For CentOS, vi
is usually installed with the base OS. For vim
:
yum install -y vim
This should only be done in early development. Once you get a working container, the changes to files should be made to your image or configs stored outside of your container. Update your Dockerfile and other files it uses to build a new image. This certainly shouldn't be done in production since changes inside the container are by design ephemeral and will be lost when the container is replaced.
回答4:
Add the following line in your Dockerfile then rebuild the docker image.
RUN apt-get update && apt-get install -y vim
回答5:
Alternatively, keep your docker images small by not installing unnecessary editors. You can edit the files over ssh from the docker host to the container:
vim scp://remoteuser@container-ip//path/to/document
回答6:
To install within your Docker container you can run command
docker exec apt-get update && apt-get install -y vim
But this will be limited to the container in which vim is installed. To make it available to all the containers, edit the Dockerfile and add
RUN apt-get update && apt-get install -y vim
or you can also extend the image in the new Dockerfile and add above command. Eg.
FROM < image name >
RUN apt-get update && apt-get install -y vim
回答7:
Use this:
apt-get update && apt-get install -y vim
Explanation of the above command
- apt-get update => Will update the current package
- apt-get install => Will install the package
- -y => Will by pass the permission, default permission will set to Yes.
- vim => Name of the package you want to install.
回答8:
Inside container(in docker, not in VM), by default these are not installed. Even apt-get, wget will not work. My VM is running on Ubuntu 17.10. For me yum package manaager worked.
Yum is not part of debian or ubuntu. It is part of red-hat. But, it works in Ubuntu and it is installed by default like apt-get
Tu install vim, use this command
yum install -y vim-enhanced
To uninstall vim :
yum uninstall -y vim-enhanced
Similarly,
yum install -y wget
yum install -y sudo
-y is for assuming yes if prompted for any qustion asked after doing yum install packagename
回答9:
I had the same problem trying to add a property to a server.properties file inside a container and my solution was:
echo "pinkUnicorn" >> file
This will add pinkUnicorn to the end of file.
p.s.: I know it is a particular case but it may save somebody some time.
来源:https://stackoverflow.com/questions/31515863/how-to-run-vi-on-docker-container