web-dev-qa-db-ja.com

Mac OSでGraphviz Dockerコンテナを実行すると、エラー「Docker:無効なパブリッシュオプションフォーマット」

私はdockerを完全に使い始めたばかりで、初めて使っています。

Mac OS用のDockerデスクトップをインストールし、「Hello-world」コンテナを正常に実行しました。私は現在、この「omerio/graphviz-server」を https://hub.docker.com/r/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がサポートしていない古い形式である可能性はありますか?

4
Steve Ives

-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)にアクセスできるようになります。

1
norbjd