我一直在 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 sh
我docker 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