我在本地计算机上运行此命令 docker run -d --name SonarQube -p 9000:9000 -p 9092:9092 sonarqube
这从dockerhub获取分支的图像,然后创建该图像的容器。现在我想在文件中进行一些更改,但容器中没有编辑器。我尝试使用apt-get安装vi说我需要成为root用户才能执行命令,当我写sudo时说找不到命令。如何在容器中安装编辑器?
我运行此命令来安装vim sudo apt-get install vim
这是我得到的错误
bash:sudo:找不到命令
答案 0 :(得分:2)
尝试将用户传递给docker run命令。
docker run -it --user root --name SonarQube -p 9000:9000 -p 9092:9092 sonarqube
但是这种方法可能会遇到同样的问题,因为它将以root
而不是sonarqube用户启动容器。
因此,我建议采用以下方法。
FROM sonarqube
USER root
RUN apt-get update \
&& apt-get install -y vim
USER sonarqube
ENTRYPOINT ["./bin/run.sh"]
用户
root(id = 0)是容器中的默认用户。图片 开发人员可以创建其他用户。这些用户可以通过以下方式访问 名称。传递数字ID时,用户不必存在于 容器。
开发人员可以设置默认用户,以使用 Dockerfile USER指令。启动容器时,操作员 可以通过传递-u选项来覆盖USER指令。
-u="", --user="": Sets the username or UID used and optionally the groupname or GID for the specified command.
The followings examples are all valid:
--user=[ user | user:group | uid | uid:gid | user:gid | uid:group ]
答案 1 :(得分:1)
根据https://hub.docker.com/_/sonarqube/上的Sonorqube Docker信息,配置文件位于绑定安装的持久卷中。您可以在本地目录中更改配置
这些映像包含位于/ opt / sonarqube的SonarQube安装。您 可以使用绑定安装的持久卷覆盖所选文件,或者 目录,例如:
sonarqube_conf:/ opt / sonarqube / conf:配置文件,例如 sonar.properties
或者您可以在命令行中指定它们
> $ docker run -d --name sonarqube \
> -p 9000:9000 \
> -v /path/to/conf:/opt/sonarqube/conf \
> -v /path/to/data:/opt/sonarqube/data \
> -v /path/to/logs:/opt/sonarqube/logs \
> -v /path/to/extensions:/opt/sonarqube/extensions \
> sonarqube
您应该尝试不要直接在Docker容器中编辑文件。如果您确实需要在运行的容器中获取文件,请尝试在本地编辑文件,然后将Docker cp放入容器中
https://docs.docker.com/engine/reference/commandline/cp/
docker cp [选项]容器:SRC_PATH DEST_PATH |-
如果您仍然真的想在容器中添加sudo,请参阅此SO帖子,可能会有所帮助。