我尝试在我的计算机上运行 GitLab Runner 容器时遇到问题。我使用的命令是:
sudo docker run -d --privileged --name gitlab-runner --restart always \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest
但是每次运行此命令时,我都会收到以下错误:
docker: Error response from daemon: error while creating mount source path '/srv/gitlab-runner/config': mkdir /srv/gitlab-runner: read-only file system.
我尝试过的事情:
更改目录权限 我尝试通过运行修改 /srv 目录的权限:
sudo chown 1000:1000 /srv/gitlab-runner
但这并没有解决问题。
检查安装选项 我使用 mount 命令来验证 /srv (或根/文件系统)是否安装为只读。它似乎被安装为只读(ro)。
尝试重新安装 我尝试将 /srv 重新挂载为读写:
sudo mount -o remount,rw /srv
这也不起作用,我仍然面临同样的只读错误。
问题:
有谁知道为什么 Docker 无法在 /srv 中创建目录以及为什么它被挂载为只读?这可能是由于 Debian 中的特定设置,还是与 Docker 权限相关的原因?任何允许 Docker 可写 /srv/gitlab-runner/config 的解决方案或解决方法将不胜感激!
提前感谢您的帮助!
docker info 的输出为:
sudo docker info
Client: Docker Engine - Community
Version: 27.3.1
Context: default
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.17.1
Path: /usr/libexec/docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Version: v2.29.7
Path: /usr/libexec/docker/cli-plugins/docker-compose
Server:
Containers: 2
Running: 1
Paused: 0
Stopped: 1
Images: 2
Server Version: 24.0.5
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Using metacopy: false
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: systemd
Cgroup Version: 2
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 3dce8eb055cbb6872793272b4f20ed16117344f8
runc version:
init version: de40ad0
Security Options:
apparmor
seccomp
Profile: builtin
cgroupns
Kernel Version: 5.15.0-124-generic
Operating System: Ubuntu Core 22
OSType: linux
Architecture: x86_64
CPUs: 8
Total Memory: 15.61GiB
Name: machine1
ID: b356d3b3-4571-4b1b-8130-1a6aa7bc2c9d
Docker Root Dir: /var/snap/docker/common/var-lib-docker
Debug Mode: false
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
我在 Ubuntu 22.04 上遇到了这个问题。或许 Debian 中也有类似的原因。
如果您使用的是快照管理的 Docker 安装,那么它会被沙盒化,以防止其写入沙盒之外的文件,例如
/srv
。
您可能希望切换到 APT 管理的
docker-ce
软件包。
请参阅此处了解更多信息:https://stackoverflow.com/a/54492532/