我正在尝试使用sudo运行docker-compose。
我在Ubuntu 16.01上安装了docker和docker-compose。
由于尝试使用curl下载compose时出错,我最终使用pip进行安装。
Docker版本1.12.0,构建8eab29e docker-compose版本1.8.0,build 94f7016
然而,当我尝试使用sudo运行docker-compose时,我得到以下内容(使用带有docker的sudo很好)
sudo: docker-compose: command not found
我认为对“安装”的含义有不同的定义。我一直在声称它没有安装的同一台计算机上使用docker-compose。
$ dpkg -s docker-compose
dpkg-query: package 'docker-compose' is not installed and no information is available
Use dpkg --info (= dpkg-deb --info) to examine archive files,
and dpkg --contents (= dpkg-deb --contents) to list their contents.
$ whereis docker-compose
docker-compose: /home/user/.local/bin/docker-compose
$ pip show --files docker-compose
---
Metadata-Version: 2.0
Name: docker-compose
Version: 1.8.0
Summary: Multi-container orchestration for Docker
Home-page: https://www.docker.com/
Author: Docker, Inc.
Author-email: UNKNOWN
Installer: pip
License: Apache License 2.0
Location: /home/anton/.local/lib/python2.7/site-packages
Requires: six, jsonschema, enum34, cached-property, websocket-client, docker-py, requests, docopt, dockerpty, PyYAML, texttable
Classifiers:
Development Status :: 5 - Production/Stable
Environment :: Console
Intended Audience :: Developers
License :: OSI Approved :: Apache Software License
Programming Language :: Python :: 2
Programming Language :: Python :: 2.7
Programming Language :: Python :: 3
Programming Language :: Python :: 3.4
Files:
../../../bin/docker-compose
compose/GITSHA
compose/__init__.py
compose/__init__.pyc
compose/__main__.py
compose/__main__.pyc
compose/bundle.py
compose/bundle.pyc
compose/cli/__init__.py
compose/cli/__init__.pyc
compose/cli/colors.py
compose/cli/colors.pyc
compose/cli/command.py
compose/cli/command.pyc
compose/cli/docker_client.py
compose/cli/docker_client.pyc
compose/cli/docopt_command.py
compose/cli/docopt_command.pyc
compose/cli/errors.py
compose/cli/errors.pyc
compose/cli/formatter.py
compose/cli/formatter.pyc
compose/cli/log_printer.py
compose/cli/log_printer.pyc
compose/cli/main.py
compose/cli/main.pyc
compose/cli/signals.py
compose/cli/signals.pyc
compose/cli/utils.py
compose/cli/utils.pyc
compose/cli/verbose_proxy.py
compose/cli/verbose_proxy.pyc
compose/config/__init__.py
compose/config/__init__.pyc
compose/config/config.py
compose/config/config.pyc
compose/config/config_schema_v1.json
compose/config/config_schema_v2.0.json
compose/config/environment.py
compose/config/environment.pyc
compose/config/errors.py
compose/config/errors.pyc
compose/config/interpolation.py
compose/config/interpolation.pyc
compose/config/serialize.py
compose/config/serialize.pyc
compose/config/sort_services.py
compose/config/sort_services.pyc
compose/config/types.py
compose/config/types.pyc
compose/config/validation.py
compose/config/validation.pyc
compose/const.py
compose/const.pyc
compose/container.py
compose/container.pyc
compose/errors.py
compose/errors.pyc
compose/network.py
compose/network.pyc
compose/parallel.py
compose/parallel.pyc
compose/progress_stream.py
compose/progress_stream.pyc
compose/project.py
compose/project.pyc
compose/service.py
compose/service.pyc
compose/state.py
compose/state.pyc
compose/utils.py
compose/utils.pyc
compose/volume.py
compose/volume.pyc
docker_compose-1.8.0.dist-info/DESCRIPTION.rst
docker_compose-1.8.0.dist-info/INSTALLER
docker_compose-1.8.0.dist-info/METADATA
docker_compose-1.8.0.dist-info/RECORD
docker_compose-1.8.0.dist-info/WHEEL
docker_compose-1.8.0.dist-info/entry_points.txt
docker_compose-1.8.0.dist-info/metadata.json
docker_compose-1.8.0.dist-info/pbr.json
docker_compose-1.8.0.dist-info/top_level.txt
Entry-points:
[console_scripts]
docker-compose=compose.cli.main:main
我尝试过以下操作 - 但仍然会遇到同样的错误:
$ chmod +x /home/username/.local/bin/docker-compose
$ chmod +x /home/anton/.local/lib/python2.7/site-packages
答案 0 :(得分:53)
在Ubuntu 16.04上
以下是解决此问题的方法:请参阅Docker Compose documentation
sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
执行curl命令后,它会将docker-compose放入
的/ usr / local / bin中
不在PATH上 要修复它,请创建一个符号链接:
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
现在,如果你这样做: docker-compose --version
您将看到docker-compose现在位于PATH
上答案 1 :(得分:18)
+------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+----------------+
| idgroups | int(11) | NO | PRI | NULL | auto_increment |
| group_id | int(11) | YES | | NULL | |
| group_name | varchar(45) | YES | | NULL |
的输出表明未从包中安装dpkg -s ...
。如果没有您的更多信息,至少有两种可能性:
根本没有安装docker-compose,你需要安装它。
此处的解决方案很简单:安装docker-compose
。
docker-compose已安装在您的docker-compose
目录中(或其他不在根$HOME
的位置)。
在这种情况下有几种解决方案。最简单的可能是取代:
$PATH
使用:
sudo docker-compose ...
这会以sudo `which docker-compose` ...
的完整路径拨打sudo
。
您也可以将docker-compose
安装到系统范围的目录中,例如docker-compose
。
答案 2 :(得分:11)
如果您尝试通过官方docker-compose页面进行安装,则需要使用curl下载二进制文件:
curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
然后不要忘记在二进制文件中添加可执行标志:
chmod +x /usr/local/bin/docker-compose
如果使用python-pip安装docker-compose
sudo apt-get -y install python-pip
sudo pip install docker-compose
尝试使用pip show --files docker-compose
查看其安装位置。
如果在用户路径中安装了docker-compose,请尝试:
sudo "PATH=$PATH" docker-compose
正如我从您更新的帖子中看到的那样,docker-compose安装在用户路径/home/user/.local/bin
中,如果此路径不在您的本地路径$PATH
中,请尝试:
sudo "PATH=$PATH:/home/user/.local/bin" docker-compose
答案 3 :(得分:4)
我会把这个留在这里作为一个可能的解决办法,至少对我有用,可能会帮助别人。很确定这只是一个linux修复程序。
我决定不使用pip install并使用github版本(安装指南中的选项一)。
不是将复制的docker-compose目录放在curl / github命令的/ usr / local / bin / docker-compose中,而是使用/ usr / bin / docker-compose,这是Docker本身的位置,并且强制程序在root中运行。所以它在root和sudo中工作,但现在没有sudo工作就没那么相反,这就是你想要以用户身份运行它的东西。
答案 4 :(得分:3)
我有同样的问题,我解决了问题:
步骤1:使用以下命令下载docker-compose。
1. sudo su
2. sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
步骤2:运行命令
chmod +x /usr/local/bin/docker-compose
步骤3:检查docker-compose版本
docker-compose --version
答案 5 :(得分:0)
或者,只需将二进制路径添加到PATH中。在bashrc的末尾:
...
export PATH=$PATH:/home/user/.local/bin/
保存文件并运行:
source .bashrc
该命令将起作用。
答案 6 :(得分:0)
如果为您的用户安装了docker-compose
但没有为root
用户安装,并且如果您只需要运行一次而忘记了,请执行以下操作:
找出docker-compose的路径:
which docker-compose
运行命令以指定上一条命令到docker-compose
的完整路径,例如:
sudo /home/your-user/your-path-to-compose/docker-compose up