我正在尝试在容器内使用docker命令。我使用此命令挂载/var/run/docker.sock并运行容器
docker run -d --name gitlab-runner --restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
gitlab/gitlab-runner:latest
但是当我尝试在容器内使用docker(gitlab-runner)时,我得到一个错误
docker: not found
主办:
srw-rw---- 1 root docker 0 Mar 23 15:13 docker.sock
容器:
0 srw-rw---- 1 root gitlab-runner 0 Mar 23 15:13 docker.sock
这工作正常,在我删除旧容器并创建新容器之前,现在我无法在容器内运行docker。请帮忙。
您应该区分docker守护程序和docker CLI。第一个是服务,它实际执行所有工作 - 构建和运行容器。第二个是可执行文件,用于向守护进程发送命令。
可执行文件(docker CLI)是轻量级的,使用/var/run/docker.sock
来访问守护进程(默认情况下,实际上有不同的传输)。
当您使用-v /var/run/docker.sock:/var/run/docker.sock
启动容器时,您实际上将主机的docker守护程序共享到容器中的docker CLI。因此,您仍然需要在容器内部安装docker CLI以使用Docker,但您不需要在内部设置守护程序(这非常复杂且需要特权模式)。
结论
在容器内安装docker CLI,共享套接字并享受。但是在使用主机的docker守护程序时,您可能会对绑定装载卷感到困惑,因为守护程序看不到容器的内部文件系统。