CentOS 7系统容器使用systemctl报错

最近开始折腾容器,用的操作系统是CentOS 7.4的版本,在容器里安装了openssh,查看sshd状态的时候使用systemctl 命令,直接就报错了。

[root@f60902db3221 /]# systemctl status sshd
Failed to get D-Bus connection: Operation not permitted

网上说在CentOS 7.2会修复,这都7.4了。

找了好一会,才找到解决方法,记录一下。
使用以下命令来创建容器

docker run -it -d --privileged --name NAME IMAGE_ID /usr/sbin/init

其中,NAME是你指定的容器命名,IMAGE_ID是你创建容器使用的镜像。
然后再额外启动一个/bin/bash进入容器,

docker exec -it NAME /bin/bash

NAME是你刚刚创建的容器名称,这样就能正常使用systemctl命令了。

[root@69fd910ffce5 /]# cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core) 
[root@69fd910ffce5 /]# systemctl status sshd
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2018-05-18 07:34:45 UTC; 28min ago
     Docs: man:sshd(8)
           man:sshd_config(5)
 Main PID: 81 (sshd)
   CGroup: /system.slice/docker-69fd910ffce5195674b277e9ad88820fa12ad4a94c80656dec336cba02c60f7b.scope/system.slice/sshd.service
           └─81 /usr/sbin/sshd -D

May 18 07:34:45 69fd910ffce5 systemd[1]: Starting OpenSSH server daemon...
May 18 07:34:45 69fd910ffce5 sshd[81]: Server listening on 0.0.0.0 port 22.
May 18 07:34:45 69fd910ffce5 sshd[81]: Server listening on :: port 22.
May 18 07:34:45 69fd910ffce5 systemd[1]: Started OpenSSH server daemon.
<think>好的,我需要解决用户在CentOS 7中遇到的“docker command not found”问题。根据用户提供的引用信息,可能的原因有几个。首先,用户提到安装docker时提示被moby-engine取代,所以可能没有正确安装docker-ce。引用[1]指出docker-ce已被替换,应安装moby-engine。然后,用户可能没有正确安装docker或者路径没有设置。另外,引用[2]和[3]提到容器内缺少vim的情况,但用户的问题是关于宿主机找不到docker命令,所以可能需要检查宿主机安装。 第一步,确认是否安装了docker。用户可能按照常规方法安装docker-ce,但由于CentOS 7的某些版本可能使用moby-engine替代。所以需要检查是否安装了正确的软件包。可以运行`yum list installed | grep -E 'docker|moby'`查看已安装的包。如果没有安装,应该按照引用[1]的建议安装moby-engine,比如`sudo yum install moby-engine`。 第二步,如果已经安装但命令不存在,可能是因为安装路径不在PATH环境变量中。可以查找docker的位置,使用`whereis docker`或者`find / -name docker`。然后添加路径到PATH中,或者创建符号链接到/usr/bin/。 第三步,检查是否安装了docker-cli工具,有时候可能只安装了守护进程而没有客户端工具。需要确认安装的包是否包含客户端。 另外,用户可能尝试了错误的安装方法,比如使用旧的教程,而没有注意到软件源的变化。建议用户按照官方文档或引用中的方法安装moby-engine,并确保更新软件源(`yum update`)。 最后,如果所有步骤都正确,可能需要重启系统或者重新加载环境变量,使docker命令生效。</think>针对CentOS 7系统中出现`bash: docker: command not found`的问题,可通过以下步骤排查和解决: --- ### **步骤1:验证Docker安装状态** 若通过常规方式安装失败,可能因系统推荐使用`moby-engine`替代`docker-ce`: 1. 检查已安装的软件包 ```bash yum list installed | grep -E 'docker|moby' ``` - 若输出包含`moby-engine`,说明已安装但命令路径未配置 - 若未安装,跳转至步骤2 --- ### **步骤2:安装正确的软件包** 根据引用[1]提示,CentOS 7中推荐使用`moby-engine`: 1. 清理旧版本(如有) ```bash yum remove docker-ce docker-ce-cli ``` 2. 安装`moby-engine` ```bash yum install -y moby-engine ``` 3. 启动服务并设置开机自启 ```bash systemctl start moby-engine systemctl enable moby-engine ``` --- ### **步骤3:配置命令路径** 若已安装`moby-engine`但命令不可用: 1. 查找`docker`二进制文件位置 ```bash find / -name docker 2>/dev/null ``` - 常见路径:`/usr/bin/docker`或`/usr/local/bin/docker` 2. 添加符号链接(假设路径为`/usr/libexec/docker`) ```bash ln -s /usr/libexec/docker/docker /usr/bin/docker ``` --- ### **步骤4:验证环境变量** 确保`PATH`包含Docker路径: ```bash echo $PATH | grep '/usr/local/bin' ``` 若无输出,临时添加路径: ```bash export PATH=$PATH:/usr/local/bin ``` --- ### **步骤5:重启系统** 部分配置需重启生效: ```bash reboot ``` --- ### **引用说明** - 若安装后仍报错,可能需检查软件源配置(参考引用[2]中`apt-get update`逻辑,对应CentOS应执行`yum update`)[^2] - 容器内命令缺失问题(如引用[3]的`vi`命令)需单独处理容器镜像,与宿主机Docker安装无关[^3] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值