目录
回复内容:
首页 后端开发 php教程 使用PHP调用Docker 命令 为什么不能成功?

使用PHP调用Docker 命令 为什么不能成功?

Jul 06, 2016 pm 01:52 PM
docker php

<code><?php echo system("sudo docker run -t -i loen/hj:v0.0.1 php /root/index.php ruby PD9waHAKZWNobyAiaGVsbG8gcGhwIjsKPz4="); // 这句不能执行 使用docker ps -a 没看到执行成功!

echo system("ls -al");// 这句能执行

?></code>
登录后复制
登录后复制

结果

<code>total 24
drwxr-xr-x 2 root root 4096 Jun 23 16:24 .
drwxr-xr-x 3 root root 4096 Jun 23 15:30 ..
-rw-r--r-- 1 root root    1 Jun 23 15:42 index.html
-rw-r--r-- 1 root root  215 Jun 23 16:24 index.php</code>
登录后复制
登录后复制

使用 php ./index.php
system("sudo docker ...") 是能执行的
使用 浏览器访问 就不能执行

回复内容:

<code><?php echo system("sudo docker run -t -i loen/hj:v0.0.1 php /root/index.php ruby PD9waHAKZWNobyAiaGVsbG8gcGhwIjsKPz4="); // 这句不能执行 使用docker ps -a 没看到执行成功!

echo system("ls -al");// 这句能执行

?></code>
登录后复制
登录后复制

结果

<code>total 24
drwxr-xr-x 2 root root 4096 Jun 23 16:24 .
drwxr-xr-x 3 root root 4096 Jun 23 15:30 ..
-rw-r--r-- 1 root root    1 Jun 23 15:42 index.html
-rw-r--r-- 1 root root  215 Jun 23 16:24 index.php</code>
登录后复制
登录后复制

使用 php ./index.php
system("sudo docker ...") 是能执行的
使用 浏览器访问 就不能执行

应该是php权限不足导致的,可以把system执行后返回的状态码打出来看一下,想看到具体的返回结果可以用exec命令。

你在浏览器中执行的是www用户,如果你用php的命令行(PHP CLI)去执行的话,则是你的当前用户,当前用户有权限的话就能运行成功。

原因应该是权限不足,楼上已经说很清楚了。

我说下其他解决方法,就是php可以直接使用Docker Remote API来对docker操作
可以参考 http://www.open-open.com/lib/view/open1419921028828.html

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

docker怎么更新镜像 docker怎么更新镜像 Apr 15, 2025 pm 12:03 PM

更新 Docker 镜像的步骤如下:拉取最新镜像标记新镜像为特定标签删除旧镜像(可选)重新启动容器(如果需要)

docker怎么退出容器 docker怎么退出容器 Apr 15, 2025 pm 12:15 PM

退出 Docker 容器的四种方法:容器终端中使用 Ctrl D 快捷键容器终端中输入 exit 命令宿主机终端中使用 docker stop &lt;container_name&gt; 命令宿主机终端中使用 docker kill &lt;container_name&gt; 命令(强制退出)

docker内的文件怎么拷贝到外面 docker内的文件怎么拷贝到外面 Apr 15, 2025 pm 12:12 PM

Docker 中将文件拷贝到外部主机的方法:使用 docker cp 命令:执行 docker cp [选项] &lt;容器路径&gt; &lt;主机路径&gt;。使用数据卷:在主机上创建目录,在创建容器时使用 -v 参数挂载该目录到容器内,实现文件双向同步。

docker怎么重启 docker怎么重启 Apr 15, 2025 pm 12:06 PM

重启 Docker 容器的方法:获取容器 ID(docker ps);停止容器(docker stop &lt;container_id&gt;);启动容器(docker start &lt;container_id&gt;);验证重启成功(docker ps)。其他方法:Docker Compose(docker-compose restart)或 Docker API(参考 Docker 文档)。

PHP:服务器端脚本语言的简介 PHP:服务器端脚本语言的简介 Apr 16, 2025 am 12:18 AM

PHP是一种服务器端脚本语言,用于动态网页开发和服务器端应用程序。1.PHP是一种解释型语言,无需编译,适合快速开发。2.PHP代码嵌入HTML中,易于网页开发。3.PHP处理服务器端逻辑,生成HTML输出,支持用户交互和数据处理。4.PHP可与数据库交互,处理表单提交,执行服务器端任务。

docker desktop怎么用 docker desktop怎么用 Apr 15, 2025 am 11:45 AM

如何使用 Docker Desktop?Docker Desktop 是一款工具,用于在本地机器上运行 Docker 容器。其使用步骤包括:1. 安装 Docker Desktop;2. 启动 Docker Desktop;3. 创建 Docker 镜像(使用 Dockerfile);4. 构建 Docker 镜像(使用 docker build);5. 运行 Docker 容器(使用 docker run)。

怎么看docker进程 怎么看docker进程 Apr 15, 2025 am 11:48 AM

Docker 进程查看方法:1. Docker CLI 命令:docker ps;2. Systemd CLI 命令:systemctl status docker;3. Docker Compose CLI 命令:docker-compose ps;4. Process Explorer(Windows);5. /proc 目录(Linux)。

PHP和Python:解释了不同的范例 PHP和Python:解释了不同的范例 Apr 18, 2025 am 12:26 AM

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

See all articles