我正在尝试了解Docker,但我一直在收到一些神秘的错误消息.
可能最简单的例子是尝试打印我安装的Docker版本:
$ sudo docker version
Client version: 1.4.1
Client API version: 1.16
Go version (client): go1.3.3
Git commit (client): 5bc2ff8
OS/Arch (client): darwin/amd64
FATA[0000] Get http:///var/run/docker.sock/v1.16/version:
dial unix /var/run/docker.sock: no such file or directory.
Are you trying to connect to a TLS-enabled daemon without TLS?
Run Code Online (Sandbox Code Playgroud)
我刚刚浏览了用户指南并完全遵循了每一步,所以我很惊讶我收到了这条消息......我现在该怎么办?
我只是注意到,如果我不使用sudo我不会得到错误:
$ docker version
Client version: 1.4.1
Client API version: 1.16
Go version (client): go1.3.3
Git commit (client): 5bc2ff8
OS/Arch (client): darwin/amd64
Server version: 1.4.1
Server API version: 1.16
Go version (server): go1.3.3
Git commit (server): 5bc2ff8
Run Code Online (Sandbox Code Playgroud)
当然,这不是一个解决方案,因为我可能需要在sudo某个地方使用...
我刚刚发现另一页说" 如果你使用的是OS X,那你不应该使用sudo." 我不知道他们是仅仅意味着这个例子,还是一般.
mau*_*uvm 149
对我来说,跑步$(boot2docker shellinit 2> /dev/null)修复了问题.
这将在当前终端会话中运行boot2docker shellinit命令的输出(set -x ...三行),这使docker命令知道在哪里可以找到boot2docker虚拟机.
每次打开终端时,添加$(boot2docker shellinit 2> /dev/null)到~/.bash_profile文件底部都将确保docker配置命令.
对于使用鱼壳的人:boot2docker shellinit ^ /dev/null | source.
请注意2> /dev/null(和鱼等效^ /dev/null)是可选的.就像@ pablo-fernandez建议的那样,这隐藏了这些Writing ..线条.
Sal*_*ali 77
我在使用sudo的MacOS上遇到了同样的错误,没有它.
我解决了它:
boot2docker start
$(boot2docker shellinit)
Run Code Online (Sandbox Code Playgroud)
PS:感谢Alan.我发现在他们的官方文档中推荐这种方法.
PS2:boot2docker init在运行两个命令之前有时可能需要(谢谢Aaron).
ElM*_*esa 54
在我的情况下(Linux Mint 17)我做了各种各样的事情,我不确定哪些是完全必要的.
我包含了缺少的Ubuntu包:
$ sudo apt-get install apparmor lxc cgroup-lite
Run Code Online (Sandbox Code Playgroud)
用户已添加到组docker:
$ sudo usermod -aG docker ${USER}
Run Code Online (Sandbox Code Playgroud)
启动守护进程(openSUSE只需要这个)
$ sudo docker -d
Run Code Online (Sandbox Code Playgroud)
由于奥斯曼·伊斯梅尔,因为也许这只是去年的事情...
愚蠢的问题,但你有没有启动docker守护进程? - Usman Ismail 2014年12月17日15:04
还要感谢github @ MichaelJCole为我提供的解决方案,因为当我阅读Usman的评论时,我没有检查守护进程.
sudo apt-get install apparmor lxc cgroup-lite
sudo apt-get install docker.io
# If you installed docker.io first, you'll have to start it manually
sudo docker -d
sudo docker run -i -t ubuntu /bin/bash
Run Code Online (Sandbox Code Playgroud)
感谢fredjean.net帖子,注意到丢失的软件包,忘记了默认的Ubuntu安装说明,并谷歌了解其他方法
事实证明,Linux Mint上默认不安装cgroup-lite和lxc软件包.然后安装两个允许我在基本映像中运行bash,然后构建并运行我的映像.
感谢brettof86关于openSUSE的评论
Pio*_*ost 48
下划线问题很简单 - 缺少/var/run/docker.sockunix域套接字的权限.
来自Docker 1.6.0 的Docker命令行参考的Daemon套接字选项 章节:
默认情况下,会创建一个unix域套接字(或IPC套接字)
/var/run/docker.sock,需要root权限或docker组成员身份.
在Fedora的 Docker 安装说明中很好地描述了向用户授予权限所需的步骤:
授予用户使用Docker的权限
泊坞窗命令行工具的联系人通过套接字文件泊坞窗守护进程
/var/run/docker.sock所拥有root:root.虽然建议将sudo用于docker命令,但如果用户希望避免使用sudo,则管理员可以创建docker组,拥有它/var/run/docker.sock,并将用户添加到该组.
$ sudo groupadd docker
$ sudo chown root:docker /var/run/docker.sock
$ sudo usermod -a -G docker $USERNAME
注销并重新登录以使上述更改生效.请注意,一些Linux发行版(Ubuntu的)的码头工人包都已经放置/var/run/docker.sock了在docker制作上述步骤的前两个不必要的组.
在OS X boot2docker的情况下,情况不同; Docker守护程序在VM内部运行,因此DOCKER_HOST必须将环境变量设置为此VM,以便Docker客户端可以找到Docker守护程序.这是通过$(boot2docker shellinit)在shell中运行来完成的.
sup*_*cal 21
确保Docker守护程序正在运行:
service docker start
Run Code Online (Sandbox Code Playgroud)
那为我修好了!
Yog*_*mat 14
$ docker version命令查询内部的泊坞窗可执行文件,而不是守护程序/服务运行.$ docker images or $ docker ps or $ docker pull centos 是将命令发送到docker守护程序/服务运行的命令.docker或您sudo在命令之前使用过的用户时,例如$ sudo docker images,它是否不需要TLS连接.访问Docker文档页面保护Docker守护程序套接字.
滚动一点到顶部,找到warning section清晰度.
AL-*_*imi 12
你需要做:
$boot2docker init
$boot2docker start
Run Code Online (Sandbox Code Playgroud)
以下设置解决了此问题:
$export DOCKER_HOST=tcp://192.168.59.103:2376
$export DOCKER_CERT_PATH=/Users/{profileName}/.boot2docker/certs/boot2docker-vm
$export DOCKER_TLS_VERIFY=1
Run Code Online (Sandbox Code Playgroud)
Din*_*hen 10
您可能还没有该文件的权限.在我将自己添加到docker群组使用后,它发生在我身上
sudo gpasswd -a user docker
Run Code Online (Sandbox Code Playgroud)
但还没有退出.
要解决此问题,您可以重新登录,也可以sg docker "docker <subcommand> ..."在注销之前使用
.
如果您在组docker 中/etc/group,您应该能够在不输入密码的情况下运行它.
在安装lxc-docker之后的Ubuntu上,您需要将用户添加到docker用户组:
sudo usermod -a -G docker myusername
Run Code Online (Sandbox Code Playgroud)
这是因为套接字文件权限:
srw-rw---- 1 root docker 0 Mar 20 07:43 /var/run/docker.sock
Run Code Online (Sandbox Code Playgroud)
不要按照其他评论中的建议运行usermod没有"-a",否则它将擦除您的其他组设置,并将离开"docker"组
这将是会发生的事情:
? ~ id pawel
uid=1000(pawel) gid=1000(pawel) groups=1000(pawel),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin),124(sambashare),998(docker)
? ~ usermod -G docker pawel
? ~ id pawel
uid=1000(pawel) gid=1000(pawel) groups=1000(pawel),998(docker)
Run Code Online (Sandbox Code Playgroud)
TLDR:当我在安装docker的诊所运行时,我的Python聚会小组遇到了这个问题,大多数用户都在OS X上:
boot2docker init
boot2docker up
Run Code Online (Sandbox Code Playgroud)
然后运行export输出给你的命令
docker info
Run Code Online (Sandbox Code Playgroud)
应该告诉你它有效.
上下文(是什么让我们遇到了问题)
我带领一家诊所安装了docker,大多数与会者都有OS X,我们遇到了这个问题,我在几台机器上克服了它.这是我们遵循的步骤:
首先,我们安装了自制软件(是的,一些与会者没有):
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Run Code Online (Sandbox Code Playgroud)
然后我们得到了用来安装virtualbox的cask,然后使用brew来安装docker和boot2docker(OS X都需要)不要使用sudo进行brew.:
brew install caskroom/cask/brew-cask
brew cask install virtualbox
brew install docker
brew install boot2docker
Run Code Online (Sandbox Code Playgroud)
解决方案
那是我们遇到问题的时候我们遇到的问题.以下修正了它.我理解这init是一次性交易,但up每次启动docker时你都可能需要运行:
boot2docker init
boot2docker up
Run Code Online (Sandbox Code Playgroud)
然后,当up它运行时,它会给出几个export命令.复制粘贴并运行它们.
最后docker info应告诉你它已正确安装.
演示
其余的命令应该演示它.(在Ubuntu linux上我需要sudo.)
docker run hello-world
docker run -it ubuntu bash
Run Code Online (Sandbox Code Playgroud)
那么你应该在容器中的root shell上:
apt-get install nano
exit
Run Code Online (Sandbox Code Playgroud)
回到本机用户bash:
docker ps -l
Run Code Online (Sandbox Code Playgroud)
在"容器ID"下查找大约12位十六进制(0-9或af)标识符,例如456789abcdef.然后,您可以提交更改并将其命名为一些描述性名称,例如descriptivename:
docker commit 456789abcdef descriptivename`
Run Code Online (Sandbox Code Playgroud)
在 Linux Ubuntu/Mint 上运行 Docker 所需的一切:
sudo apt-get -y install lxc
sudo gpasswd -a ${USER} docker
newgrp docker
sudo service docker restart
Run Code Online (Sandbox Code Playgroud)
或者,如果上述方法不起作用,您可能需要安装两个额外的依赖项:
sudo apt-get -y install apparmor cgroup-lite
sudo service docker restart
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
164287 次 |
| 最近记录: |