前提・実現したいこと
書籍「Pythonで学ぶ強化学習」のサンプルコードの実行環境をこちらを参考にしながらdockerで構築しました。
書籍によるとサンプルコードのrun_server.pyを実行すると、localhost:8888にアクセスすることできるらしいのですが、接続が拒否されてしまいます。
Dockerfile
# ①CPUの場合 FROM tensorflow/tensorflow:1.12.0-py3 COPY baby-steps-of-rl-ja/requirements.txt /root/ # ②パッケージインストール RUN add-apt-repository -y ppa:jonathonf/vim \ && apt-get update \ && apt-get install -y git vim xterm sudo python3-tk \ && pip install --upgrade pip \ && pip install -r /root/requirements.txt # ③ユーザーの切り替え RUN groupadd -g 1000 developer && \ useradd -u 1000 -g 1000 --groups sudo --create-home --shell /bin/bash developer && \ echo 'developer:P@ssw0rd' | chpasswd USER developer WORKDIR /home/developer
ターミナルでのコマンド
docker run --name baby-steps-container -it -e DISPLAY=host.docker.internal:0.0 -v ~/Desktop/baby-steps-of-rl-ja:/home/developer/baby-steps-of-rl-ja -v /tmp/.X11-unix/:/tmp/.X11-unix baby-steps-env bash
その後、コンテナ内でrun_server.pyを実行
developer@bef3c54ed2aa:~/baby-steps-of-rl-ja/DP$ python run_server.py Run server on port: 8888
run_server.py
import os import tornado.ioloop from tornado.options import define, options, parse_command_line from application import Application define("port", default=8888, help="run on the given port", type=int) def main(): parse_command_line() app = Application() port = int(os.environ.get("PORT", 8888)) app.listen(port) print("Run server on port: {}".format(port)) tornado.ioloop.IOLoop.current().start() if __name__ == "__main__": main()
この状態でlocalhost:8888にアクセスしましたが、localhostでの接続が拒否されます。
今まで、dockerを用いて、localhostにアクセスした経験等がないため、初歩的な質問で頓珍漢なことをしているかもしれません。
どなたか解決策がわかる方いましたらご教授願います。
補足情報(FW/ツールのバージョンなど)
mac OS Catalina ver.10.15.7
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。