解决Docker run报`exec: “docker-proxy“: executable file not found in $PATH`错误
报错详情查看的位置创建软链接验证软链接重新启动容器通过以上步骤,我们成功地解决了Docker run报的错误。希望这篇文章对你有所帮助!如果你有任何问题或建议,请随时留言。
在使用Docker进行容器管理时,有时会遇到启动容器时报错exec: "docker-proxy": executable file not found in $PATH。这个错误通常是由于Docker的docker-proxy可执行文件未在系统的$PATH环境变量中,导致Docker守护进程无法找到它。本文将详细介绍如何解决这个问题。
1. 报错详情
首先,我们来看一下报错的具体信息。当我们尝试启动一个Zookeeper容器时:
[root@iZuligp6e1dyzfZ /]# docker run --name zk01 -p 2181:2181 --restart always -d 7341c5373a13
59d47e925c0d6f0815cbbab62d349b364248caebed53eb522413d7f59d27665a
/usr/bin/docker-current: Error response from daemon: driver failed programming external connectivity on endpoint zk01 (929602510b5a61eb8d0162c275f80d7d0797bf2ed68b2642c11bcc189db9ea89): exec: "docker-proxy": executable file not found in $PATH.
从错误信息中可以看到,Docker守护进程在尝试使用docker-proxy来设置网络连通性时失败了,因为找不到这个可执行文件。
2. 解决步骤
容器的启动需要执行/usr/bin/docker-proxy,但我们系统中可能没有这个文件或者它不在$PATH中。接下来,我们将逐步解决这个问题。
步骤1:查看docker-proxy的位置
首先,我们需要找到docker-proxy的实际位置。通常,这个信息可以在Docker的服务配置文件中找到。我们查看一下/usr/lib/systemd/system/docker.service文件:
[root@iZuligp6e1dyzfZ /]# cat /usr/lib/systemd/system/docker.service | grep prox
--userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
从输出中可以看到,docker-proxy的实际路径是/usr/libexec/docker/docker-proxy-current。
步骤2:创建docker-proxy的软链接到/usr/bin/下
为了让Docker守护进程能够找到docker-proxy,我们可以创建一个软链接到/usr/bin/目录下:
[root@iZuligp6e1dyzfZ /]# ln -s /usr/libexec/docker/docker-proxy-current /usr/bin/docker-proxy
运行上述命令后,我们在/usr/bin/目录下创建了一个指向/usr/libexec/docker/docker-proxy-current的软链接。
验证软链接是否创建成功
我们可以通过以下命令来验证软链接是否创建成功:
[root@iZuligp6e1dyzfZ /]# ls -l /usr/bin/docker-proxy
lrwxrwxrwx 1 root root 38 Jan 1 12:34 /usr/bin/docker-proxy -> /usr/libexec/docker/docker-proxy-current
从输出中可以看到,软链接已经成功创建。
步骤3:重新尝试启动容器
现在,我们可以重新尝试启动之前失败的容器:
[root@iZuligp6e1dyzfZ /]# docker run --name zk01 -p 2181:2181 --restart always -d 7341c5373a13
这次,容器应该能够成功启动,不再报错exec: "docker-proxy": executable file not found in $PATH。
示例总结
-
报错详情:
[root@iZuligp6e1dyzfZ /]# docker run --name zk01 -p 2181:2181 --restart always -d 7341c5373a13 59d47e925c0d6f0815cbbab62d349b364248caebed53eb522413d7f59d27665a /usr/bin/docker-current: Error response from daemon: driver failed programming external connectivity on endpoint zk01 (929602510b5a61eb8d0162c275f80d7d0797bf2ed68b2642c11bcc189db9ea89): exec: "docker-proxy": executable file not found in $PATH. -
查看
docker-proxy的位置:[root@iZuligp6e1dyzfZ /]# cat /usr/lib/systemd/system/docker.service | grep prox --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \ -
创建软链接:
[root@iZuligp6e1dyzfZ /]# ln -s /usr/libexec/docker/docker-proxy-current /usr/bin/docker-proxy -
验证软链接:
[root@iZuligp6e1dyzfZ /]# ls -l /usr/bin/docker-proxy lrwxrwxrwx 1 root root 38 Jan 1 12:34 /usr/bin/docker-proxy -> /usr/libexec/docker/docker-proxy-current -
重新启动容器:
[root@iZuligp6e1dyzfZ /]# docker run --name zk01 -p 2181:2181 --restart always -d 7341c5373a13
通过以上步骤,我们成功地解决了Docker run报exec: "docker-proxy": executable file not found in $PATH的错误。希望这篇文章对你有所帮助!如果你有任何问题或建议,请随时留言。
更多推荐
所有评论(0)