我在Mac OS 10.8.5上安装了docker-machine 0.1.0和docker-compose 1.1.0。
Docker-machine正常运行,可以通过docker-machine ssh连接。
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
dev * virtualbox Running tcp://192.168.99.100:2376
但无法从docker-compose连接。
$ docker-compose up
无法连接到http + unix://var/run/docker.sock的Docker守护程序 - 它正在运行吗?
如果它位于非标准位置,请使用DOCKER_HOST环境变量指定URL。
我的Dockerfile和docker-compose.yml就在这里。
Dockerfile
FROM centos:centos7
DOCKER_HOST tcp://192.168.99.100:2376
搬运工-compose.yml
web:
build: .
为什么无法连接?有什么想法吗?
答案 0 :(得分:135)
对我来说简单的解决方案:sudo docker-compose up
更新2016-3-14:在docker安装过程(或docker-compose?)的某个时刻,有一个建议和示例将您的用户名添加到“docker”组。这允许您在所有docker命令之前避免需要“sudo”,如下所示:
~ > docker run -it ubuntu /bin/bash
root@665d1ea76b8d:/# date
Mon Mar 14 23:43:36 UTC 2016
root@665d1ea76b8d:/# exit
exit
~ >
仔细查看安装命令的输出(docker和docker-compose的第二次安装),您将找到必要的步骤。这里还记录了:https://subosito.com/posts/docker-tips/
<强>须藤?不!
每次发出命令都厌倦了输入sudo docker?是的,那里 是一种解决这个问题的方法。虽然天然码头需要一个 root用户,我们可以为docker操作提供一个root-equivalent组。
您可以创建一个名为docker的组,然后将所需的用户添加到该组 组。重新启动docker服务后,用户无需键入 sudo每次做docker操作。它在shell上的样子 命令?作为根,你走了:
> sudo groupadd docker
> sudo gpasswd -a username docker
> sudo service docker restart
完成!
本节包含配置Linux主机以便更好地使用Docker的可选过程。
以非root用户身份管理Docker
docker守护程序绑定到Unix套接字而不是TCP端口。默认情况下,Unix套接字由用户root拥有,而其他用户只能使用sudo访问它。 docker守护程序始终以root用户身份运行。
如果您在使用docker命令时不想使用sudo,请创建一个名为docker的Unix组并向其添加用户。当docker守护程序启动时,它会使docker组对Unix套接字的所有权进行读/写。
要创建泊坞窗组并添加您的用户:
# 1. Create the docker group.
$ sudo groupadd docker
# 2. Add your user to the docker group.
$ sudo usermod -aG docker $USER
# 3. Log out and log back in so that your group membership is re-evaluated.
# 4. Verify that you can run docker commands without sudo.
$ docker run hello-world
此命令下载测试图像并在容器中运行。当容器运行时,它会打印一条信息性消息并退出。
答案 1 :(得分:77)
Docker机器正在运行。但是您需要导出一些环境才能连接到Docker机器。默认情况下,docker
CLI客户端正尝试使用http+unix://var/run/docker.sock
与守护程序通信(如错误消息中所示)。
使用eval $(docker-machine env dev)
导出正确的环境变量,然后重试。您也可以运行docker-machine env dev
来查看它将导出的环境变量。请注意,其中一个是DOCKER_HOST
,正如错误消息建议您可能需要设置一样。
答案 2 :(得分:15)
默认情况下,docker守护程序始终以root用户身份运行,因此您需要将sudo
添加到Docker命令中。
如果您在使用docker命令时不想使用sudo,请创建一个名为docker的Unix组并向其添加用户。当docker守护程序启动时,它会使docker组对Unix套接字的所有权进行读/写。
创建泊坞窗组。
$ sudo groupadd docker
将您的用户添加到泊坞窗组。
$ sudo usermod -aG docker $USER
退出并重新登录,以便重新评估您的论坛成员资格。
确认您可以在没有sudo的情况下停靠命令。
$ docker run hello-world
此命令下载测试图像并在容器中运行。当容器运行时,它会打印一条信息性消息并退出。
答案 3 :(得分:13)
如果您使用sudo
启动了泊坞广告,那么您应该使用sudo
运行docker-compose
喜欢:sudo docker-compose up
答案 4 :(得分:7)
sudo systemctl start docker
- 启动Docker服务。
sudo docker-compose up
。
我有Fedora 26,并尝试解决同样的问题,我最终输入了Docker Compose on Fedora Developers' page然后Docker on Fedora Developers' page,这对我有帮助。
也许,社区认为docker服务从系统开始并一直在后台运行,但对我而言并不是那么明显,这就是为什么我能想到为什么没有像这样的流行答案。< / p>
在Fedora Developers' page上有说明如何启用Docker以启动系统:
sudo systemctl enable docker
答案 5 :(得分:6)
如果您使用的是Linux,则可能未安装<button onclick="show()">
Show me!
</button>
function show() {
console.log("function called")
var chart;
var chartData = [{
"ax": 1,
"ay": 0.5,
"bx": 1,
"by": 2.2
}, {
// ...
});
}
,因为它仅在Windows和Mac计算机上默认安装。
如果需要,您需要:https://docs.docker.com/machine/install-machine/查找有关如何在您的Linux版本上安装它的说明。
安装完成后,在尝试上面列出的任何内容之前重试docker-machine
。
希望这有助于某人。这适用于我在Fedora 25中的devilbox安装。
答案 6 :(得分:6)
我在Ubuntu 20.0.4中通过以下方式解决了该问题
sudo chmod 666 /var/run/docker.sock
然后
sudo service docker start && docker-compose up -d
答案 7 :(得分:4)
我知道这很愚蠢,但就我而言,我只是尝试使用sudo
,它就像一种魅力。
根据您的情况,只需尝试:$ sudo docker-compose up
答案 8 :(得分:4)
解决这个问题的快速方法
<块引用>只需在您的 docker 命令之前添加 sudo,例如
sudo docker-compose up
答案 9 :(得分:3)
来自@srfrnk的回答对我有用。
在我的情况下,我有下一个docker-compose.yml文件:
nginx:
build:
context: ./
dockerfile: "./docker/nginx.staging/Dockerfile"
depends_on:
- scripts
environment:
NGINX_SERVER_NAME: "some.host"
NGINX_STATIC_CONTENT_OPEN_FILE_CACHE: "off"
NGINX_ERROR_LOG_LEVEL: debug
NGINX_BACKEND_HOST: scripts
NGINX_SERVER_ROOT: /var/www/html
volumes:
- ./docker-runtime/drupal/files:/var/www/html/sites/default/files:rw
ports:
- 80:80
./docker-runtime
所有者和群组 - 当其他文件所有者 - 我的用户时,root
。
当我尝试构建nginx
Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?
我将./docker-runtime
添加到.dockerignore
,这解决了我的问题。
答案 10 :(得分:3)
1 . sudo service docker stop
2 . sudo service docker status
3 . sudo service docker start
4 . docker-compose build <app_name\service_name>
答案 11 :(得分:3)
出现错误时:
错误:无法通过http + docker:// localhost连接到Docker守护进程- 它在运行吗?
解决方案是:
首先,尝试在远程/本地计算机上按预期验证 Docker服务已启动并正在运行:sudo service docker status
如果不是-运行sudo service docker start
或sudo systemctl start docker
(取决于某些Linux版本)。
第二,以sudo身份启动docker sudo docker-compose up
答案 12 :(得分:2)
如果您使用的是docker-machine,则必须使用 env 变量激活环境。 如果你没有使用docker-machine,那么用 sudo
运行你的命令答案 13 :(得分:2)
我有相同的症状。
仅在docker-compose build
期间发生的差异
docker ps
工作了。
发生了版本2.x
以及3.x
。
重新启动docker
服务,然后是机器......
甚至重新安装了docker
+ docker-compose
。
尝试了一切,但没有任何帮助。
最后我尝试构建Dockerfile&#34;手动&#34;使用docker build
。
显然我在Docker
上下文中的文件/文件夹上有权限问题。它正在尝试在启动构建时读取上下文,并且失败并显示正确的错误消息。
但是,此错误消息未传播到仅显示docker-compose
的{{1}}
发现解决方案只是将文件/文件夹添加到Couldn't connect to Docker daemon at http+unix://var/run/docker.sock - is it running?
文件中,因为构建不需要它。另一种解决方案可能是.dockerignore
或chown
。
无论如何,这可能会帮助遇到与chmod
无关的同一问题的人以及显示的误导性错误消息。
答案 14 :(得分:2)
除了将用户添加到docker组之外,为避免重复输入sudo
,还可以为docker
命令创建别名,如下所示:
alias docker-compose="sudo docker-compose"
alias docker="sudo docker"
答案 15 :(得分:2)
有人检查过日志吗?
我的案例/var/log/upstart/docker.log
中的错误消息是:
Listening for HTTP on unix (/var/run/docker.sock)
[graphdriver] using prior storage driver "aufs"
Running modprobe bridge nf_nat failed with message: , error: exit status 1
Error starting daemon: Error initializing network controller: Error creating default "bridge" network: can't find an address range for interface "docker0"
值得一提的是我打开了vpn,所以:
$ sudo service openvpn stop
$ sudo service docker restart
$ docker-compose up|start
$ sudo service openvpn start
是解决方案。
答案 16 :(得分:1)
可能存在权限问题,以下命令对我有用。
sudo chown $USER /var/run/docker.sock
感谢 Max 的解决方案:https://stackoverflow.com/posts/60282354/revisions
答案 17 :(得分:1)
尝试使用以下命令重新启动 docker 环境:
systemctl restart docker
答案 18 :(得分:1)
工作中!
我尝试了以下命令及其工作方式
service docker restart
docker-compose -f docker_compose.yaml down
docker-compose -f docker_compose.yaml up
答案 19 :(得分:1)
注销然后再次登录对我有帮助。就我而言,这是全新安装,我创建了一个新用户,新组然后将该用户添加到了docker组。
退出 退出
然后再次SSH进入服务器
答案 20 :(得分:1)
我已按照以下步骤解决了该问题
$ sudo service docker status
$ sudo service docker start
$ sudo docker-compose up
现在docker-compose up正在工作
答案 21 :(得分:0)
以下内容对我有用,我不确定是什么原因完成的:
julian:project$ sudo service docker status
julian:varys$ sudo service docker status
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-07-15 01:21:16 UTC; 24min ago
Docs: https://docs.docker.com
Main PID: 6762 (dockerd)
Tasks: 25
CGroup: /system.slice/docker.service
└─6762 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
julian:project$ export DOCKER_HOST=unix:///run/containerd/containerd.sock
julian:project$ sudo groupadd docker
groupadd: group 'docker' already exists
julian:project$ sudo gpasswd -a $USER docker
Adding user ubuntu to group docker
julian:project$ newgrp docker
julian:project$ ls -ln /var/run/ | grep docker
drwx------ 5 0 0 120 Jul 15 01:10 docker
-rw-r--r-- 1 0 0 4 Jul 15 01:10 docker.pid
srw-rw---- 1 0 999 0 Jul 15 01:10 docker.sock
julian:project$ sudo rm /var/run/docker.sock
julian:project$ sudo rm /var/run/docker.pid
julian:project$ sudo service docker restart
答案 22 :(得分:0)
尝试首先运行dockerd
或sudo dockerd
以启动守护程序。如果您以dockerd
开始sudo
,则可能也要以docker-compose up
运行sudo
。否则很好。
答案 23 :(得分:0)
我的设置有两种情况可解决此错误:
__pycache__
由root用户在容器内运行集成测试后创建的文件对于docker(告诉您原始问题)和docker-compose(告诉您有关docker主机的模棱两可)无法访问; microk8s
阻止了我的端口,直到我停止它为止。答案 24 :(得分:0)
在运行docker-compose pull
时-我遇到错误了
错误:无法通过http + docker:// localhost
连接到Docker守护程序
它在运行吗?
解决方案-
sudo service docker start
问题已解决
答案 25 :(得分:0)
尝试一下:
sudo ln -s / usr / local / bin / docker-compose / usr / bin / docker-compose
答案 26 :(得分:0)
$ sudo docker-compose up
我确实按照上述答案中的步骤进行操作,以将$ USER添加到docker组。我不想添加新的组docker,因为在我的docker安装中,会自动创建一个名为docker的组。
,但是使用docker-compose up也不起作用。它给出了相同的先前错误。 因此,在我的情况下(Ubuntu 18.10)sudo docker-compose up解决了该问题。
ps:@Tiw,谢谢您的建议。
答案 27 :(得分:0)
以根用户身份运行它。 sudo docker-compose up --build
答案 28 :(得分:0)
对我来说,我开始升级Docker并中途取消。我没有注意到Docker没有运行(如果是的话,我的Macbook顶部导航栏中有一个图标,包括电池剩余时间,时间等)。启动并完成升级后,docker-compose up
再次工作!