DIG*_*UAD 131 docker docker-compose
我在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
Run Code Online (Sandbox Code Playgroud)
但无法从docker-compose连接.
$ docker-compose up
Run Code Online (Sandbox Code Playgroud)
我的Dockerfile和docker-compose.yml就在这里.
Dockerfile
FROM centos:centos7
DOCKER_HOST tcp://192.168.99.100:2376
Run Code Online (Sandbox Code Playgroud)
泊坞窗,compose.yml
web:
build: .
Run Code Online (Sandbox Code Playgroud)
为什么不能连接?有任何想法吗?
Ala*_*son 176
简单的解决方案: 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
~ >
Run Code Online (Sandbox Code Playgroud)
仔细查看安装命令的输出(docker和docker-compose的第二次安装),您将找到必要的步骤.它还记录在这里:https: //subosito.com/posts/docker-tips/
须藤?没有!
厌倦了每次发出命令时输入sudo docker?是的,有办法解决这个问题.虽然自然docker需要root用户,但我们可以为docker操作提供root等效组.
您可以创建一个名为docker的组,然后将所需用户添加到该组.重新启动docker服务后,用户无需在每次执行docker操作时键入sudo.shell命令的外观如何?作为根,你走了:
> sudo groupadd docker
> sudo gpasswd -a username docker
> sudo service docker restart
Run Code Online (Sandbox Code Playgroud)
完成!
本节包含配置Linux主机以使用Docker更好地工作的可选过程.
以非root用户身份管理Docker
docker守护程序绑定到Unix套接字而不是TCP端口.默认情况下,Unix套接字由用户root拥有,而其他用户只能使用sudo访问它.docker守护程序始终以root用户身份运行.
如果您在使用docker命令时不想使用sudo,请创建一个名为docker的Unix组并向其添加用户.当docker守护程序启动时,它会使docker组对Unix套接字的所有权进行读/写.
要创建docker组并添加您的用户:
# 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
Run Code Online (Sandbox Code Playgroud)
此命令下载测试映像并在容器中运行它.当容器运行时,它会打印一条信息性消息并退出.
And*_*inn 81
Docker机器正在运行.但是您需要导出一些环境才能连接到Docker机器.默认情况下,docker
CLI客户端尝试使用http+unix://var/run/docker.sock
(如错误消息中所示)与守护程序通信.
使用导出正确的环境变量eval $(docker-machine env dev)
,然后重试.您也可以运行docker-machine env dev
以查看它将导出的环境变量.请注意,其中一个是DOCKER_HOST
,正如错误消息建议您可能需要设置.
Moh*_*ari 32
我在 Ubuntu 20.0.4 中解决了这个问题
sudo chmod 666 /var/run/docker.sock
Run Code Online (Sandbox Code Playgroud)
进而
sudo service docker start && docker-compose up -d
Run Code Online (Sandbox Code Playgroud)
nde*_*ker 18
默认情况下,docker守护程序始终以root用户身份运行,因此您需要sudo
在Docker命令之前添加前缀.
如果您在使用docker命令时不想使用sudo,请创建一个名为docker的Unix组并向其添加用户.当docker守护程序启动时,它会使docker组对Unix套接字的所有权进行读/写.
创建docker组.
$ sudo groupadd docker
将您的用户添加到docker组.
$ sudo usermod -aG docker $USER
注销并重新登录,以便重新评估您的组成员身份.
验证您是否可以在没有sudo的情况下停靠命令.
$ docker run hello-world
此命令下载测试映像并在容器中运行它.当容器运行时,它会打印一条信息性消息并退出.
上面列出的步骤来自官方Docker文档.
Ale*_*rov 12
sudo systemctl start docker
-启动Docker服务。
sudo docker-compose up
之后。
我有Fedora 26,并且试图解决同一问题,最终我在Fedora开发人员页面上进入了Docker Compose,然后在Fedora开发人员页面上进入了Docker,这对我有所帮助。
社区可能认为docker服务总是从系统开始并一直在后台运行,但是对我而言,它并不那么明显,这就是我能想到为什么没有像这样的流行答案的原因。
在Fedora开发人员页面上,有说明如何使Docker从系统启动:
sudo systemctl enable docker
解决这个问题的快速方法
只需在 docker 命令之前添加 sudo ,例如
sudo docker-compose up
Run Code Online (Sandbox Code Playgroud)
如果您使用的是Linux,则可能未docker-machine
安装,因为它仅在Windows和Mac计算机上默认安装.
如果需要,您需要访问:https://docs.docker.com/machine/install-machine/以查找有关如何在您的Linux版本上安装它的说明.
安装后,docker-compose up
在尝试上面列出的任何内容之前重试运行.
希望这有助于某人.这适用于我在Fedora 25中的devilbox安装.
运行时docker-compose pull
- 我遇到以下错误
错误:无法连接到位于 http+docker://localhost 的 Docker 守护进程
它在运行吗?
解决方案 -
sudo service docker start
Run Code Online (Sandbox Code Playgroud)
问题解决了
除了将用户添加到 docker 组之外,为了避免sudo
重复输入,您还可以为docker
命令创建别名,如下所示:
alias docker-compose="sudo docker-compose"
alias docker="sudo docker"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
144171 次 |
最近记录: |