我是码头工的新手,所以如果这是一个我很想念的相当明显的过程,我会为前面的愚蠢问题道歉.
我正在使用jenkinsdocker镜像设置一个持续集成服务器.我做了一个docker pull jenkins,并创建了一个用户jenkins,允许我/var/jenkins_home将容器中的容器挂载到我的主机/var/jenkins_home(也由jenkins:jenkins用户拥有).
问题是容器似乎jenkins用uid 102 来定义用户,但是我的主机将jenkins用户设置为1002,所以当我运行它时,我得到:
docker run --name jenkins -u jenkins -p 8080 -v /var/jenkins_home:/var/jenkins_home jenkins
/usr/local/bin/jenkins.sh: line 25: /var/jenkins_home/copy_reference_file.log: Permission denied
Run Code Online (Sandbox Code Playgroud)
我只是让主机jenkins用户的uid为102 /etc/passwd,但是这个uid已经被sshd占用了.我认为解决方案是改变容器使用uid 1002,但我不知道如何.
编辑
实际上,主机上的用户102是messagebus,而不是sshd.
我有一个运行jenkins的码头集装箱.我想在这个容器里面启动其他容器,所以在这个容器之外.
我试图用以下方式启动我的jenkins控制器:
docker run -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/bin/docker
Run Code Online (Sandbox Code Playgroud)
(如下所示:https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/)
但是当我在我的容器内部尝试运行Docker命令时,我会得到典型的消息
FATA[0000] Get http://%2Fvar%2Frun%2Fdocker.sock/v1.18/containers/json: dial unix /var/run/docker.sock:
connect: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?
Run Code Online (Sandbox Code Playgroud)
并没有办法在这个容器内运行docker命令..
我试过有没有--privileged = true,它仍然无法正常工作.
如果您有任何想法!