我是docker的新手,并且是第一次使用它。
我已经安装了适用于Mac OS的Docker Desktop,并成功运行了“ Hello-world”容器。我现在正在尝试从https://hub.docker.com/r/omerio/graphviz-server运行此“ omerio / graphviz-server”(这是我真正想要Docker的目的),尽管“ docker pull omerio / graphviz-server”命令已成功完成:
devops$ docker pull omerio/graphviz-server
Using default tag: latest
latest: Pulling from omerio/graphviz-server
863735b9fd15: Pull complete
4fbaa2f403df: Pull complete
44be94a95984: Pull complete
a3ed95caeb02: Pull complete
ae092b5d3a08: Pull complete
d0edb8269c6a: Pull complete
Digest: sha256:02cd3e2355526a927e951a0e24d63231a79b192d4716e82999ff80e0893c4adc
Status: Downloaded newer image for omerio/graphviz-server:latest
启动容器的命令(在https://hub.docker.com/r/omerio/graphviz-server上给出):'docker run -d -p : omerio/graphviz-server'
给我错误消息:
devops$ docker run -d -p : omerio/graphviz-server
docker: invalid publish opts format (should be name=value but got ':').
See 'docker run --help'.
搜索此错误消息根本不返回任何信息。我看到有问题的容器最近一次更新是在3年前-难道这是Docker不再支持的旧格式吗?
答案 0 :(得分:0)
-p
命令的 docker run
选项在主机和容器之间绑定端口(请参阅docs),并且在大多数情况下,其用法如下:
docker run <other options> \
-p <port on the host>:<port in the container> \
<my_image> <args>
以您的示例为例:运行映像似乎需要一个参数(容器中的端口)。例如,让我们选择8080
(这意味着端口8080
将由容器内的应用程序使用)。
如果要直接在主机上(通过localhost
访问它,则应将8080
端口(在容器中,我们之前选择的端口)绑定到主机上的任何可用端口(假设8081
),就像这样:
docker run \
-p 8081:8080 \
omerio/graphviz-server 8080
您现在应该可以通过8080
从主机访问应用程序(容器中运行的应用程序的端口localhost:8081
)。