Windows 上的多行 docker run 命令

P E*_*ram 6 multiline docker

我想在 Windows 上运行多行 docker run 命令。

说,

docker run --name packer \
-d ekambaram/packer:1.4.0
Run Code Online (Sandbox Code Playgroud)

得到以下错误

C:\Users\ekambaram_pasham>docker run --name packer \
docker: invalid reference format.
See 'docker run --help'.

C:\Users\ekambaram_pasham>-d ekambaram/packer:1.4.0
'-d' is not recognized as an internal or external command,
operable program or batch file.
Run Code Online (Sandbox Code Playgroud)

P E*_*ram 12

Windows 上的命令提示符中,我能够运行多行 docker run 命令,如下所示

docker run --name packer ^
-d ekambaram/packer:1.4.0
Run Code Online (Sandbox Code Playgroud)

使用 ^ 作为命令分隔符而不是 \

C:\Users\ekambaram_pasham>docker run --name packer ^
More? -d ekambaram/packer:1.4.0
7e3599a599a7b19613f50323456d66a324c2ac558bb71eb9060bda54dfcd8f4d
Run Code Online (Sandbox Code Playgroud)

对于 PowerShell,您需要用 `(反勾号)代替 ^ 或 \ 替换,如下所示

docker run -p 80:80 -p 443:443 `
           -h hostname.domain `
           -e "MYSQL_ROOT_PASSWORD=password" `
           -e "SOGO_WORKERS=1" `
           -e "POSTMASTER_PASSWORD=(plain)password" `
           -e "IREDAPD_PLUGINS=['reject_null_sender', 'reject_sender_login_mismatch', 'greylisting', 'throttle', 'amavisd_wblist', 'sql_alias_access_policy']" `
           -v iredmail_mysql:/var/lib/mysql `
           -v iredmail_vmail:/var/vmail `
           -v iredmail_clamav:/var/lib/clamav `
           --name=iredmail lejmr/iredmail:mysql-latest
Run Code Online (Sandbox Code Playgroud)

  • 对于 Powershell,除了正确的说法之外,` 反引号必须是行中的最后一个字符。即使 AFTER 后有一个空格也会结束命令并在下一行产生错误。 (2认同)