在Docker中无法使用yum或systemctl

概述

我在Docker中安装了CentOS,并在其上运行Apache、PHP和Python时遇到了一些问题,所以我将其作为个人备忘录保存在了Qiita上。

因为这是我初次投稿,所以可能会有一些日语使用不正确或者写作不流畅的地方,请您谅解。

迷恋清单

    • dockerのコマンドがいまいち分かっていない

 

    • パッケージを入れようとしたらyumが使えない

 

    yum問題解決後httpdを立ち上げようとしたらsystemctlコマンドが使えない

不知道Docker命令

這是我學習不足的表現。我打算將來繼續使用它,所以我會把它留作筆記。

docker pull centos

首先,下载机器镜像。

docker run -it -p 9999:80 --name xxxxx centos /bin/bash

为了使用Apache,我们将创建并启动一个容器。
我们将把从主机操作系统的9999端口接收的数据转发到80端口。

无法使用yum

放入容器中的CentOS,打算使用Apache时,发现在执行yum命令时出现错误。

Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist

在直译的表示中,我被告知缺少镜像列表中的URL。
当我搜索此错误时,出现了各种解决方法。
但是无论我尝试哪个方法,错误都没有改变,我原以为只需要将URL添加到镜像列表中就可以成功,但实际却没有成功。
虽然我想尝试更多的方法来修复错误,但由于这次有其他事情需要做,所以我尝试了另一种方法。

请指定CentOS版本进行安装。

最终没有解决。 de suǒ)

docker pull centos:centos7

当使用这种方式在CentOS 7上指定版本并创建容器时,可以使用yum。这样做更方便。

无法使用systemctl命令

当我希望能够使用yum并安装httpd开始将其转化为WEB服务器时,出现了无法使用systemctl的问题。看来在CentOS 7中,默认情况下并没有启用systemd。要启用它,需要管理员权限,因此在容器启动时需要使用 –privileged 选项。然而,仅仅使用这个选项是不能解决错误的。

Failed to get D-Bus connection: Operation not permitted

通过首先执行 “/sbin/init” 命令,就可以使用 systemctl。

docker run -it --privileged -p 9999:80 --name **** centos:centos7 /sbin/init

这样一来,Apache也被安装了,并且可以通过systemctl启动了。
总之,准备工作已经完成。

总结

只是想要简单地运行一下PHP和Python,但意外地遇到了困难,所以我在这里总结一下。
非常抱歉我的句子很拙劣,我想大家都遇到了同样的问题吧。
如果有人能从这篇文章中得到帮助,我想将其分享出来。
如果有任何错误或语法不正确的地方,或者觉得这种写法不易读懂的话,请在评论中告诉我,我将不胜感激。

文章可供参考。

 

广告
将在 10 秒后关闭
bannerAds