2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

書籍「Pythonで学ぶ強化学習」のサンプルコードを実行可能な環境をdockerで構築 (プロキシ版)

Last updated at Posted at 2019-04-13

概要

書籍「Pythonで学ぶ強化学習」のサンプルコードを実行可能な環境をdockerで構築 (GUI出力対応)を会社等のプロキシ環境で使う際の設定になります。

環境

Ubuntu 18.04

目指す環境

  • python==3.5
  • tensorflow==1.12.0
  • docker内でグラフプロット等のGUI使用可能
  • プロキシ環境で動作するコンテナ

下準備

1. dockerのインストール

書籍「Pythonで学ぶ強化学習」のサンプルコードを実行可能な環境をdockerで構築 (GUI出力対応)の1を参照

2. ホスト側のGUI表示用設定

書籍「Pythonで学ぶ強化学習」のサンプルコードを実行可能な環境をdockerで構築 (GUI出力対応)の2を参照

3. NVIDIAドライバーとnvidia-docker2のインストール(GPU使用の場合)

書籍「Pythonで学ぶ強化学習」のサンプルコードを実行可能な環境をdockerで構築 (GUI出力対応)の3を参照

4. dockerのプロキシ設定とsudoなし設定

docker pull等を実行できるようにdockerのプロキシ設定を行います。
あとsudoも使わなくていいように設定しておきます。

参考記事 : Ubuntu Docker インストールとproxyとsudo無し実行

5. DNSの設定

Ubuntuの場合、dockerコンテナのDNS設定はホスト側のDNS設定を引き継ぎます。
具体的にはホストの「/etc/resolve.conf」がコンテナ内にコピーされます。
この際にGUIの設定画面等で設定したホスト側のDNS設定やDHCPから配布された設定が「/etc/resolve.conf」に反映されていない場合があります。
以下のページを参考に、nameserverが自分自身を指定している場合(127.0.0.1など)の場合は設定を変更して下さい。

参考記事 : Ubuntu 16.10: /etc/resolv.confのnameserver 127.0.0.1を防ぐ

dockerの設定

6. Dockerfile

書籍「Pythonで学ぶ強化学習」のサンプルコードを実行可能な環境をdockerで構築 (GUI出力対応)と比べて②環境変数設定, ③apt.confの作成 を追加しています。これでコンテナ内のプロキシ環境変数とaptのプロキシを設定しています。
使用する際は「PROXY_ID」, 「PROXY_PASS」, 「PROXY_HOST」, 「PROXY_PORT」のoooを自分のプロキシの「認証ID」, 「認証パスワード」, 「サーバー名」, 「ポート番号」に変更します。

Dockerfile
# GPUの場合
# FROM tensorflow/tensorflow:1.12.0-gpu-py3
# ①CPUの場合
FROM tensorflow/tensorflow:1.12.0-py3
COPY into_container/requirements.txt /root/

# ②環境変数設定
ENV PROXY_ID ooo
ENV PROXY_PASS ooo
ENV PROXY_HOST ooo
ENV PROXY_PORT ooo
ENV PROXY_SERVER http://"$PROXY_ID":"$PROXY_PASS"@"PROXY_HOST":"PROXY_PORT"
ENV http_proxy "$PROXY_SERVER"
ENV https_proxy "$PROXY_SERVER"
ENV ftp_proxy "$PROXY_SERVER"
ENV HTTP_PROXY "$PROXY_SERVER"
ENV HTTPS_PROXY "$PROXY_SERVER"
ENV FTP_PROXY "$PROXY_SERVER"

# ③apt.confの作成
RUN echo "Acquire::ftp::proxy \"""$PROXY_SERVER""\";" > /etc/apt/apt.conf \
 && echo "Acquire::fttp::proxy \"""$PROXY_SERVER""\";" >> /etc/apt/apt.conf \
 && echo "Acquire::fttps::proxy \"""$PROXY_SERVER""\";" >> /etc/apt/apt.conf

# ④パッケージインストール
RUN add-apt-repository -y ppa:jonathonf/vim \
 && apt-get update \
 && apt-get install -y git vim xterm sudo python3-tk \
 && pip3 install --upgrade pip \
 && pip3 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

7. ビルド

普通にビルドすればOKです。

build.sh
docker build -t baby-steps-env .

8. コンテナ起動

書籍「Pythonで学ぶ強化学習」のサンプルコードを実行可能な環境をdockerで構築 (GUI出力対応)の5を参照

9. 実行

書籍「Pythonで学ぶ強化学習」のサンプルコードを実行可能な環境をdockerで構築 (GUI出力対応)の6を参照

7. 動作確認

コンテナ内のbashコンソールで

書籍「Pythonで学ぶ強化学習」のサンプルコードを実行可能な環境をdockerで構築 (GUI出力対応)の7を参照

8. Gitリポジトリ

Gitに今回紹介したソースをあげていますのでよければご利用ください。
Ubuntu用 : kinziro/baby-steps-ubuntu-env_on_docker_in_proxy

参考にさせて頂いたサイト

Ubuntu Docker インストールとproxyとsudo無し実行
Ubuntu 16.10: /etc/resolv.confのnameserver 127.0.0.1を防ぐ

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?