在Docker容器中执行systemctl
命令时,无论是启动nginx, 或者是vsftpd等服务,都会报如下错误。
1 2
| systemctl status vsftpd Failed to get D-Bus connection: Operation not permitted
|
解决方法
- 在启动容器时,需要加上
--privileged
参数来添加权限。
- 不能使用默认的bash,而需要执行
/usr/sbin/init
执行命令:
1
| docker run -dit --privileged <image_id> /usr/sbin/init
|
以下我们以安装启动vsftpd
服务来例子来讲解。
启动centos的容器
1
| docker run -dit --privileged 3816db78c729 /usr/sbin/init
|
进入刚才启动的容器
1
| docker exec -it d9c3cf1ad7a bash
|
yum安装vsftpd
服务
启动vsftpd
服务
查看vsftpd
服务的状态
1 2 3 4 5 6 7 8 9 10 11 12
| systemctl status vsftpd ● vsftpd.service - Vsftpd ftp daemon Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled) Active: active (running) since Sat 2019-11-16 03:55:51 UTC; 2s ago Process: 176 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS) Main PID: 177 (vsftpd) CGroup: /docker/d9c3cf1ad7a9084f7563169cbac71b7a5687ebc25703c43f31b6f33a59e686e6/system.slice/vsftpd.service └─177 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf ‣ 177 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
Nov 16 03:55:51 d9c3cf1ad7a9 systemd[1]: Starting Vsftpd ftp daemon... Nov 16 03:55:51 d9c3cf1ad7a9 systemd[1]: Started Vsftpd ftp daemon.
|