如果jenkins运行在docker容器中,系统重启后无法访问docker.sock

问题描述 投票:0回答:1
 ERROR: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/_ping : dial unix /var/run/docker.sock: connect: permission denied

我尝试更改所有内容,从授予 sudo 权限到 docker.sock 并将 sock 权限更改为 666。 我知道这是一个安全问题。但权限更改会在每次系统重新启动时被覆盖。

我想要么保留许可。 或者修复 jenkins 容器和系统主机之间的 sock.connectivity 问题。

我尝试执行堆栈溢出必须提供的所有操作,但我无法将 sock 的权限保留为 666 或者直接解决问题而不将权限修改为 666。

linux docker jenkins containers
1个回答
0
投票

我自己做了一个修复,每次重新启动时运行权限都是令人畏惧的,所以我更新了我的 crontab 来修复权限。

但是你们会感到惊讶,这也没有成功。 因为 docker.daemon 总是比你的机器启动得晚,并且出于安全考虑,它再次限制了权限。 经过多次撞击后,它得到了修复。

    Until I did this thing.
    
    I told my script to run once the docker daemon is already up and running.
    So that the permissions are never overridden by docker daemon.
    
    1.I created a small script under /usr/local/bin/dockersock-permissions.sh
    setting up permissions.
    2.Then I created permission.service under /etc/systemd/system/dockersock-permissions.service
    3.sudo chmod +x /usr/local/bin/dockersock-permissions.sh
    4.sudo systemctl enable dockersock-permissions.service
    5.sudo systemctl start dockersock-permissions.service

and voila I never looked back again to that nasty error of the jenkins container not able to connect to docker.sock on host.




root@hanisntsolo-To-be-filled-by-O-E-M:/home/hanisntsolo# cat /etc/systemd/system/dockersock-permissions.service
[Unit]
Description=Set Docker Socket Permissions
After=docker.service

[Service]
Type=simple
ExecStart=/usr/local/bin/dockersock-permissions.sh

[Service]
Type=oneshot
ExecStart=/bin/chmod 666 /var/run/docker.sock

[Install]
WantedBy=multi-user.target
root@hanisntsolo-To-be-filled-by-O-E-M:/home/hanisntsolo# cat /usr/local/bin/dockersock-permissions.sh
#!/bin/bash
chmod 666 /var/run/docker.sock

Lastly you can check if everything went fine with below :: 
root@hanisntsolo-To-be-filled-by-O-E-M:/home/hanisntsolo# systemctl status dockersock-permissions.service
○ dockersock-permissions.service - Set Docker Socket Permissions
     Loaded: loaded (/etc/systemd/system/dockersock-permissions.service; enabled; vendor preset: enabled)
     Active: inactive (dead) since Tue 2024-01-30 21:29:43 IST; 1h 13min ago
    Process: 12435 ExecStart=/usr/local/bin/dockersock-permissions.sh (code=exited, status=0/SUCCESS)
    Process: 12438 ExecStart=/bin/chmod 666 /var/run/docker.sock (code=exited, status=0/SUCCESS)
   Main PID: 12438 (code=exited, status=0/SUCCESS)
        CPU: 9ms

Jan 30 21:29:42 hanisntsolo-To-be-filled-by-O-E-M systemd[1]: Starting Set Docker Socket Permissions...
Jan 30 21:29:43 hanisntsolo-To-be-filled-by-O-E-M systemd[1]: dockersock-permissions.service: Deactivated successfully.
Jan 30 21:29:43 hanisntsolo-To-be-filled-by-O-E-M systemd[1]: Finished Set Docker Socket Permissions.
© www.soinside.com 2019 - 2024. All rights reserved.