私は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がサポートしていない古い形式である可能性はありますか?
-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
)にアクセスできるようになります。