如何解决docker-machine无法启动的问题

网友投稿 3892 2022-10-11

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

如何解决docker-machine无法启动的问题

docker-machine无法启动的解决办法:1、使用“docker-machine ls”查看主机状态;2、卸载现有docker,并重新安装;3、启动docker,并查看docker服务状态即可。

本文操作环境:centos7系统、Docker 19.03.9版、Dell G3电脑。

如何解决docker-machine无法启动的问题?

Centos7 docker-machine 部署docker主机 docker服务启动失败

背景:

计划使用Centos7 Core 作为 docker host,搭建测试平台,只有4台主机,就使用Swarm方案。

环境:

主机名称系统IP地址前置工作
docker-host1CentOS7 Corexxx.xxx.xxx.80

更新yum源,使用aliyun镜像,更新到最新状态

配置docker-machine 使用的用户,sudo免密码

docker-host2CentOS7 Corexxx.xxx.xxx.81

更新yum源,使用aliyun镜像,更新到最新状态

配置docker-machine 使用的用户,sudo免密码

docker-host3CentOS7 Corexxx.xxx.xxx.82

更新yum源,使用aliyun镜像,更新到最新状态

配置docker-machine 使用的用户,sudo免密码

docker-host4CentOS7 Corexxx.xxx.xxx.83

更新yum源,使用aliyun镜像,更新到最新状态

配置docker-machine 使用的用户,sudo免密码

desktopubuntu-18.04lts配置免秘钥登录到docker-host

安装:

在工作desktop(Ubuntu)主机上安装 docker-machine,可以参考https://docs.docker.com/machine/install-machine/

首先安装 docker-host1:

docker-machine --debug create --driver generic --generic-ip-address=xxx.xxx.xxx.80 --generic-ssh-key=/home/sleeber/.ssh/id_rsa --generic-ssh-port=22 --generic-ssh-user=wntime docker-host1

安装最后输出,显示docker 服务无法启动:

sudo systemctl -f start dockerSSH cmd err, output: exit status 1: Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.Error creating machine: Error running provisioning: something went wrong running an SSH commandcommand : sudo systemctl -f start dockererr : exit status 1output : Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.notifying bugsnag: [Error creating machine: Error running provisioning: something went wrong running an SSH commandcommand : sudo systemctl -f start dockererr : exit status 1output : Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.]

使用docker-machine ls 查看主机状态:

:~/docker-test-env$ docker-machine lsNAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORSdocker-host1 - generic Running tcp://xxx.xxx.xxx.80:2376 Unknown Unable to query docker version: Cannot connect to the docker engine endpoint

SSH到docker-host1 主机,手动启动docker服务

sudo systemctl start dockerJob for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.

按照提示查看状态

systemctl status docker.service● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled) Drop-In: /etc/systemd/system/docker.service.d └─10-machine.conf Active: failed (Result: start-limit) since Thu 2020-05-28 20:41:39 EDT; 581ms ago Docs: https://docs.docker.com Process: 30463 ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock --storage-driver overlay2 --tlsverify --tlscacert /etc/docker/ca.pem --tlscert /etc/docker/server.pem --tlskey /etc/docker/server-key.pem --label provider=generic (code=exited, status=1/FAILURE) Main PID: 30463 (code=exited, status=1/FAILURE)

谷歌一下:https://github.com/moby/moby/issues/33931https://jianshu.com/p/bd395fdf7611https://jianshu.com/p/93518610eea1

按照搜索结果看,应该是10-machine.conf引起;但是删除了10-machine.conf文件,及文件夹还是无法启动

$ sudo rm /etc/systemd/system/docker.service.d/10-machine.conf$ sudo systemctl start dockerFailed to start docker.service: Unit is not loaded properly: Invalid argument.See system logs and 'systemctl status docker.service' for details.$ sudo rm -rf /etc/systemd/system/docker.service.d/$ sudo systemctl start dockerFailed to start docker.service: Unit is not loaded properly: Invalid argument.See system logs and 'systemctl status docker.service' for details.

使用dockerd 直接能启动

$ sudo nohup dockerd &[1] 31419$ nohup: ignoring input and appending output to ‘nohup.out’$ lltotal 4-rw-------. 1 root root 2638 May 28 20:52 nohup.out$ tail -f nohup.outtail: cannot open ‘nohup.out’ for reading: Permission deniedtail: no files remaining$ sudo tail -f nohup.outtime="2020-05-28T20:52:56.409646032-04:00" level=warning msg="Base device already exists and has filesystem xfs on it. User specified filesystem will be ignored." storage-driver=devicemappertime="2020-05-28T20:52:56.430282474-04:00" level=info msg="[graphdriver] using prior storage driver: devicemapper"time="2020-05-28T20:52:56.430326847-04:00" level=warning msg="[graphdriver] WARNING: the devicemapper storage-driver is deprecated, and will be removed in a future release"time="2020-05-28T20:52:56.433336530-04:00" level=warning msg="mountpoint for pids not found"time="2020-05-28T20:52:56.433595847-04:00" level=info msg="Loading containers: start."time="2020-05-28T20:52:56.529329426-04:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred IP address"time="2020-05-28T20:52:56.558933143-04:00" level=info msg="Loading containers: done."time="2020-05-28T20:52:56.570819898-04:00" level=info msg="Docker daemon" commit=9d988398e7 graphdriver(s)=devicemapper version=19.03.9time="2020-05-28T20:52:56.570873940-04:00" level=info msg="Daemon has completed initialization"time="2020-05-28T20:52:56.585131361-04:00" level=info msg="API listen on /var/run/docker.sock"^C$ sudo docker versionClient: Docker Engine - Community Version: 19.03.9 API version: 1.40 Go version: go1.13.10 Git commit: 9d988398e7 Built: Fri May 15 00:25:27 2020 OS/Arch: linux/amd64 Experimental: falseServer: Docker Engine - Community Engine: Version: 19.03.9 API version: 1.40 (minimum version 1.12) Go version: go1.13.10 Git commit: 9d988398e7 Built: Fri May 15 00:24:05 2020 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.2.13 GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429 runc: Version: 1.0.0-rc10 GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd docker-init: Version: 0.18.0 GitCommit: fec3683

使用systemctl 查看docker服务状态还是显示失败

$ sudo systemctl status docker● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled) Drop-In: /etc/systemd/system/docker.service.d └─10-machine.conf Active: failed (Result: start-limit) since Thu 2020-05-28 20:49:52 EDT; 4min 59s ago Docs: https://docs.docker.com Process: 31051 ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock --storage-driver overlay2 --tlsverify --tlscacert /etc/docker/ca.pem --tlscert /etc/docker/server.pem --tlskey /etc/docker/server-key.pem --label provider=generic (code=exited, status=1/FAILURE) Main PID: 31051 (code=exited, status=1/FAILURE)May 28 20:49:50 test-java2 systemd[1]: docker.service failed.May 28 20:49:52 test-java2 systemd[1]: docker.service holdoff time over, scheduling restart.May 28 20:49:52 test-java2 systemd[1]: Stopped Docker Application Container Engine.May 28 20:49:52 test-java2 systemd[1]: start request repeated too quickly for docker.serviceMay 28 20:49:52 test-java2 systemd[1]: Failed to start Docker Application Container Engine.May 28 20:49:52 test-java2 systemd[1]: Unit docker.service entered failed state.May 28 20:49:52 test-java2 systemd[1]: docker.service failed.May 28 20:50:45 test-java2 systemd[1]: start request repeated too quickly for docker.serviceMay 28 20:50:45 test-java2 systemd[1]: Failed to start Docker Application Container Engine.May 28 20:50:45 test-java2 systemd[1]: docker.service failed.

推断 docker-machine 安装docker还是有些问题,只能手动安装

注意:卸载docker后,需要手动删除/etc/systemd/system/docker.service.d/ 文件夹,否则新安装的docker也是不能启动的。

卸载现有docker,并重新安装

sudo yum remove docker* \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-enginesudo rm -rf /etc/systemd/system/docker.service.d/sudo yum install -y yum-utils device-mapper-persistent-data lvm2sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.reposudo yum install -y docker-ce docker-ce-cli containerd.io

启动docker,并查看docker服务状态

$ sudo docker versionClient: Docker Engine - Community Version: 19.03.10 API version: 1.40 Go version: go1.13.10 Git commit: 9424aeaee9 Built: Thu May 28 22:18:06 2020 OS/Arch: linux/amd64 Experimental: falseServer: Docker Engine - Community Engine: Version: 19.03.10 API version: 1.40 (minimum version 1.12) Go version: go1.13.10 Git commit: 9424aeaee9 Built: Thu May 28 22:16:43 2020 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.2.13 GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429 runc: Version: 1.0.0-rc10 GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd docker-init: Version: 0.18.0 GitCommit: fec3683

可以正常启动了

推荐学习:《docker视频教程》

php入门到就业线上直播课:查看学习

上一篇:docker ping不通宿主机怎么办
下一篇:linux下mysql字符集怎么修改
相关文章

 发表评论

暂时没有评论,来抢沙发吧~