我想编写Docker容器管理的脚本,但是我发现很难将PS变量传递给Docker命令,特别是由于路径格式的差异。
以下行(*)和您可以在此处找到的赞都可以 使用,但是很不方便:
Start-Process docker " run --rm -v $($env:USERPROFILE -replace '\\','/'):/data alpine ls /data"
的确,PS Start- Process
非常适合MSI安装程序,您需要查看弹出窗口并控制其可见性级别,以便了解无提示安装程序正在运行。取而代之的是,您不想每次运行控制台应用程序时都启动一个新窗口,尤其是在Docker中,在其中您与调用程序和被调用shell来回交互。
PS&
为“运行命令,脚本或脚本块”特别提供了“调用操作符,也称为’调用html" target="_blank">操作符’”。但是,我尝试使用以下方法未成功:
& docker run --rm -v $($env:USERPROFILE -replace '\\','/'):/data alpine ls /data
Cmd.exe
也许会使事情变得更容易,但是PowerShell是与Docker for
Windows
交互的官方shell
。因此,应该有一种可靠的方式将变量参数传递给Docker命令。
(*)-rm
此处,remove开关仅用于试验答案以避免混乱工作空间的目的。当然,我通常不会在创建容器后立即销毁它,而是与它经过的容器进行交互
-ti
。
编辑
@AnsgarWiechers 在评论中建议使用参数展开:
$params = 'run', '--rm', "-v $($env:USERPROFILE -replace '\\','/'):/data", 'alpine', 'ls /data'
docker @params
假设我正确实现了它,那么它也不起作用,并给出:
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: invalid mode: /data.
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.
不需要参数拼写甚至调用运算符,双引号可以解决:
docker run --rm -v "$($env:USERPROFILE -replace '\\','/'):/data" alpine ls /data
我有以下Powershell代码: 我应该如何声明可以传递给函数的局部变量。我的局部变量$file被填充,但当我将其作为其他函数的参数时,它就像它超出了范围。 我读了关于scopes的文章,但没能弄明白。 当前我收到错误: ini文件:D:\Projects\scripts\Configs\HBOX。ini测试路径:无法将参数绑定到参数“Path”,因为它是空字符串。在D:\项目\自由职业者。co
我正在尝试运行一个带有env变量的docker映像。 但是它对我来说不管是使用env.list文件还是命令行都不起作用。
问题内容: 我有Google地图提供的JavaScript值,需要将其保存在MySQL数据库中。 其实我有变量 我需要将该变量传递给PHP变量lugar 问题答案: 如果要在页面转换时进行操作,则可以通过表单或在URL中传递它,然后仅使用或接收变量。 如果您需要无缝完成它,那么您可能需要考虑使用AJAX。
问题内容: 我有几个docker- compose.yml文件,我希望将它们与同一个Dockerfile一起使用,但略有不同。因此,我想将参数传递给该Dockerfile,以便根据变量设置为什么值来做一些稍有不同的操作。 到目前为止我尝试过的 docker-compose-A.yml文件 docker-compose-B.yml文件 我有一个要在其中使用SOMETHING的dockerfile。
问题内容: 我有一个PHP会话变量,在整个会话过程中仍然有效。在开头部分,我包含了我的JavaScript文件。 如果需要以下内容,如何将会话变量传递到JavaScript文件中。 由于无法在JavaScript文件中识别出,因此上面的代码不起作用。因此,我必须放入PHP文件本身,但是如何将其保留在JavaScript文件中? 问题答案: 在您的PHP文件中,您可以将用户设置为全局变量: 在包含外