コラボレーションサーバーのR実行環境に信頼する認証局を追加する方法

Exploratoryコラボレーション・サーバーのR実行環境に信頼する認証局を追加するには、デフォルトのR実行環境のDockerイメージを元に、信頼する認証局を追加したDockerイメージを作成して使用します。このドキュメントではその手順を説明します。

1. デフォルトのr-exploratory DockerイメージからDockerコンテナを起動する

以下のコマンドで、デフォルトのr-exploratory Dockerイメージをベースに、Dockerコンテナを起動します。 この例では、コラボレーション・サーバーのバージョンは6.10.4.6を前提として説明しますが、コマンド内のバージョン番号は適宜置き換えてください。

docker run -it r-exploratory:6.10.4.6 /bin/bash

上のコマンドを実行すると、Dockerコンテナ内で実行されるシェルが表示されます。

2. Dockerコンテナ上で、信頼する認証局を追加する

表示されたシェルを使って、信頼する認証局をDockerコンテナの環境に追加します。

まず、認証局の証明書ファイルを/usr/share/ca-certificatesディレクトリの下にコピーします。ファイル名は任意ですが、拡張子は必ず.crtとしてください。

その後、以下のコマンドで、追加された認証局の証明書を有効にします。

dpkg-reconfigure ca-certificates

Dockerコンテナを残しておくために、シェルはまだ終了しないでください。

3. Dockerコンテナを元に、カスタムのDockerイメージを作成する

先程のDockerコンテナのIDを取得するために、同じLinuxマシン上で、もう一つシェルを起動して、以下のコマンドを実行します。

docker ps

すると、以下のような表が出力されます。

CONTAINER ID        IMAGE                   COMMAND ...
5877b324ad8c        r-exploratory:6.10.4.6   "/bin/bash" ...
...

表中でIMAGEがr-exploratory:6.10.4.6、COMMANDが"/bin/bash"となっている行が、先程のDockerコンテナを表す行です。この行のCONTAINER IDの値が、必要なコンテナIDです。この例では、5877b324ad8cがコンテナIDとなります。

こちらのコンテナIDを指定して、コンテナに加えた変更を保持したDockerイメージを作成します。この例では、この新しいDockerイメージのバージョンを6.10.4.6.1 としています。

docker commit  -c 'CMD ["R", "-e", "Rserve::run.Rserve(remote=TRUE)"]' -c 'EXPOSE 6311' 5877b324ad8c r-exploratory:6.10.4.6.1

4. 作成したカスタムDockerイメージに追加した認証局の証明書ファイルを確認

作成したDockerイメージを元にDockerコンテナを起動して、変更がうまく追加されているか確認します。

docker run -it r-exploratory:6.10.4.6.1 /bin/bash

表示されるシェル内で、先程追加した認証局の証明書が存在することを確認します。

ls /usr/share/ca-certificates

5. カスタムのr-exploratory Dockerイメージをコラボレーション・サーバーから使用する

docker-compose.ymlファイルをエディタで開いて、以下のようにr-exploratory Dockerイメージのバージョンを指定している行を見つけます。

...
  rserve:
    image: r-exploratory:6.10.4.6
...

こちらのバージョンを、作成したカスタムDockerコンテナのもので置き換えます。

...
  rserve:
    image: r-exploratory:6.10.4.6.1
...

これで、コラボレーション・サーバーを起動しなおせば、信頼する認証局を追加したRの実行環境がコラボレーション・サーバー上で使用されるようになります。

Export Chart Image
Output Format
PNG SVG
Background
Set background transparent
Size
Width (Pixel)
Height (Pixel)
Pixel Ratio