如何在 Fedora CoreOS 上安装 docker-compose

如何在 Fedora CoreOS 上安装 docker-compose

我一直在 digitalocean 上使用 Fedora CoreOS 版本 31.20200505.3.0(图片取自此处https://getfedora.org/coreos/download?tab=cloud_operators&stream=stable

默认用户核心,但需要提升权限才能使用 docker

使用命令通过二进制文件安装 docker-compose

curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o ~/bin/docker-compose
chmod +x ~/bin/docker-compose

由于错误而无法工作:“[6261] 加载 Python lib'/tmp/_MEI7CUfMy/libpython3.7m.so.1.0' 时出错:dlopen:libcrypt.so.1:无法打开共享对象文件:没有此文件或目录”

所以我尝试通过其他方式安装

curl -L --fail https://github.com/docker/compose/releases/download/1.25.5/run.sh -o ~/bin/docker-compose
chmod +x ~/bin/docker-compose

(以 root 身份)但问题是无法访问绑定挂载。使用此处的解决方案解决了https://stackoverflow.com/questions/24288616/permission-denied-on-accessing-host-directory-in-docker(添加:Z)到选项并相应地修改~/bin/docker-compose shell 脚本。

但是然后我收到错误“无法连接到 http+docker://localhost 上的 Docker 守护程序 - 它正在运行吗?”

如果running docker-compose shdocker run hello-world收到“docker: 尝试连接到 unix:///var/run/docker.sock 上的 Docker 守护进程套接字时权限被拒绝: 发布http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/创建:拨号 unix /var/run/docker.sock:连接:权限被拒绝。请参阅‘docker run --help’。”

此时,我正在考虑其他容器发行版或 Debian。

有人能指出如何在 Fedora CoreOS 上安装 docker-compose 吗?

UPD:感谢@Bert 的提示,这解决了 docker-compose 二进制文件的问题sudo rpm-ostree install libxcrypt-compat

答案1

为什么不直接安装 docker-compose 包?作为 Fedora docker-compose 包的维护者,我尝试确保它适用于所有 Fedora 用户。

[core@localhost ~]$ sudo rpm-ostree install docker-compose
Checking out tree 318de83... done
Enabled rpm-md repositories: fedora-cisco-openh264 updates fedora updates-archive
rpm-md repo 'fedora-cisco-openh264' (cached); generated: 2020-08-25T19:05:18Z
rpm-md repo 'updates' (cached); generated: 2020-12-13T02:23:33Z
rpm-md repo 'fedora' (cached); generated: 2020-04-22T22:22:36Z
rpm-md repo 'updates-archive' (cached); generated: 2020-12-13T04:16:16Z
Importing rpm-md... done
Resolving dependencies... done
Will download: 40 packages (15.8 MB)
Downloading from 'updates'... done
Downloading from 'fedora'... done
Importing packages... done
Checking out packages... done
Running pre scripts... done
Running post scripts... done
Running posttrans scripts... done
Writing rpmdb... done
Writing OSTree commit... done
Staging deployment... done
Added:
  docker-compose-1.25.4-1.fc32.noarch
  gdbm-libs-1:1.18.1-3.fc32.x86_64
  libsodium-1.0.18-3.fc32.x86_64
  libxcrypt-compat-4.4.17-1.fc32.x86_64
  python-pip-wheel-19.3.1-4.fc32.noarch
  python-setuptools-wheel-41.6.0-2.fc32.noarch
  python-unversioned-command-3.8.6-1.fc32.noarch
  python3-3.8.6-1.fc32.x86_64
  python3-attrs-19.3.0-2.fc32.noarch
  python3-bcrypt-3.1.7-4.fc32.x86_64
  python3-cached_property-1.5.1-7.fc32.noarch
  python3-cffi-1.14.0-1.fc32.x86_64
  python3-chardet-3.0.4-15.fc32.noarch
  python3-cryptography-2.8-3.fc32.x86_64
  python3-docker-4.2.0-1.fc32.noarch
  python3-docker-pycreds-0.4.0-6.fc32.noarch
  python3-dockerpty-0.4.1-18.fc32.noarch
  python3-docopt-0.6.2-16.fc32.noarch
  python3-fluidity-sm-0.2.0-18.fc32.noarch
  python3-idna-2.8-6.fc32.noarch
  python3-invoke-1.4.1-1.fc32.noarch
  python3-jsonschema-3.2.0-2.fc32.noarch
  python3-lexicon-1.0.0-10.fc32.noarch
  python3-libs-3.8.6-1.fc32.x86_64
  python3-paramiko-2.7.1-2.fc32.noarch
  python3-pip-19.3.1-4.fc32.noarch
  python3-ply-3.11-7.fc32.noarch
  python3-pyOpenSSL-19.0.0-6.fc32.noarch
  python3-pyasn1-0.4.8-1.fc32.noarch
  python3-pycparser-2.19-2.fc32.noarch
  python3-pynacl-1.3.0-6.fc32.x86_64
  python3-pyrsistent-0.16.0-1.fc32.x86_64
  python3-pysocks-1.7.1-4.fc32.noarch
  python3-pyyaml-5.3.1-1.fc32.x86_64
  python3-requests-2.22.0-8.fc32.noarch
  python3-setuptools-41.6.0-2.fc32.noarch
  python3-six-1.14.0-2.fc32.noarch
  python3-texttable-1.6.2-5.fc32.noarch
  python3-urllib3-1.25.7-3.fc32.noarch
  python3-websocket-client-0.56.0-6.fc32.noarch
Run "systemctl reboot" to start a reboot

请记住,为了使用 Docker(无需sudo),您的用户必须在该docker组中。默认情况下,CoreOScore用户不在此组中。

[core@localhost ~]$ sudo usermod -aG docker core

退出并重新登录后,确认您的用户在该docker组中。

[core@localhost ~]$ id
uid=1000(core) gid=1000(core) groups=1000(core),4(adm),10(wheel),16(sudo),190(systemd-journal),978(docker) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

现在您可以使用docker-compose了。

[core@localhost ~]$ cd composetest/
[core@localhost composetest]$ docker-compose up
Creating network "composetest_default" with the default driver
Building web
Step 1/10 : FROM python:3.7-alpine

...

web_1    |  * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)

答案2

Fedora 31 附带了 libcrypt 版本 2。docker-compose需要 libcrypt 版本 1。通过运行dnf provides libcrypt.so.1,我们可以看到旧版本 1 由软件包提供libcrypt-compat。您只需使用安装此软件包dnf install libcrypt-compat

这应该可以解决您遇到的第一个错误。

答案3

您也可以使用“dnf”安装该包。

不使用“rpm-ostree”。

dnf install libxcrypt-compat

相关内容