docker build -t myapp_back .
でdockerイメージを作成
そして、次を使用してコンテナを実行したい:docker run -p 3000:3000 -d myapp_back
シンプルノード/エクスプレスアプリです
しかし、エラーが発生しています:
C:\ Program Files\Docker\Docker\Resources\bin\docker.exe:デーモンからのエラー応答:ドライバーは、エンドポイントwizardly_wescoff(a7c53e0d168f915f900e3d67ec72805c2f8e4f5e595f6ae3c7fed8e097886a8b)での外部接続のプログラミングに失敗しました:mkdir:t 3000:tcp:172.17.0.2:3000:入出力エラー。
どうしましたか?
私のdockerfile:
FROM node:carbon
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ['npm', 'start']
package.jsonで開始します。
"start": "nodemon src/app.js --exec babel-node"
Windowsで次のエラーを解決するには、単にDockerを再起動します(トレイメニューから、または[設定/リセット]で[Dockerを再起動...]オプションを選択します)
Cannot start service YOUR_SERVICE: driver failed programming external connectivity on endpoint ...
Dockerの既知の問題のようです: https://github.com/docker/for-win/issues/57
試してください:
すべてのコンテナを停止するには、docker ps -a -q | ForEach { docker stop $_ }
を実行します
編集:すべてのコンテナを停止するためのShellScriptコードの作業
for a in `docker ps -a -q`
do
echo "Stopping container - $a"
docker stop $a
done
コンピューターを再起動するだけで動作します。
コンピュータを再起動することは実際の修正ではなく、単なる回避策であり、頻繁に行う必要があります。
この問題は、Windows 10のデフォルトのシャットダウン動作に関連しています。
実際の修正は、Windowsの高速起動設定を無効にして実現できます。
コントロールパネル->電源オプション->電源ボタンの機能を選択する->現在使用できない設定を変更する->高速起動をオンにする
Dockerを工場出荷時のデフォルトにリセットすることにより、Windows 10 PCでDockerを動作させることができます。 Dockerの再起動、マシンの再起動が機能しませんでした。
Linuxで実行しています。 Sudoコマンドを使用してrootとしてdockerを実行すると、正常に機能します。
Mac Mojaveでは、次のコマンドを実行して、ポートを使用しているプロセスを見つけます。
Sudo lsof -i @localhost:<port_no>
私の場合、ポート8080をチェックしていたので、実行します
Sudo lsof -i @localhost:8080
Http-altはポート8080で実行されており、上記のコマンドを使用してプロセスIDを取得した後、次の方法でプロセスを強制終了できます。
Sudo kill -9 <process_id>
ただし、私の場合、4つのアプリケーションArtemisSe, Mail, Google and Slack
はポート8080でhttp-altを使用しています。これらは重要なアプリケーションに見えるため、ポートを変更し、8080ではなく8888でコンテナを実行します。
docker run -it --rm -p 8888:8080 <imageid or image name>
Dockerを再起動し、アイコンを右クリックして再起動します。それは私の問題を解決しました