docker dind(docker in docker) 方式:在 docker 容器内启动 docker daemon 服务,创建一个与宿主机隔离的环境
bash
docker run -it -d --rm --privileged docker:dind
挂载宿主机 socket 方式
bash
docker run -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock ...
.gitlab-ci.yml
yaml
docker-build:# Use the official docker image.image:docker:clistage:buildservices:- docker:dind
普通用户执行 Docker 命令
正在将用户 xiexianbin 加入到 docker 组中
bash
sudo gpasswd -a xiexianbin docker
重启
bash
sudo systemctl restart docker
需改 sock 权限
bash
$ ls -lhart /var/run/docker.sock
srw-rw---- 1 root docker 0 Dec 15 13:31 /var/run/docker.sock
$ sudo chmod a+rw /var/run/docker.sock
$ ls -lhart /var/run/docker.sock
srw-rw-rw- 1 root docker 0 Dec 15 13:31 /var/run/docker.sock
若不修改权限,会报错
bash
$ docker ps
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json": dial unix /var/run/docker.sock: connect: permission denied
F&Q
OCI runtime exec failed: open /dev/pts/1: operation not permitted: unknown
bash
$ sudo docker exec -it --user root autpr_tainer_731 /bin/bash
OCI runtime exec failed: exec failed: unable to start container process: open /dev/pts/1: operation not permitted: unknown