3

コンテナーを実行するとすぐに「tensorflow」という名前の conda 環境がアクティブになる既存の Docker イメージから特異点コンテナーをセットアップしようとしています。ここで、このトピックに関するいくつかの回答を見つけました。残念ながら、この投稿では、singularity .def ファイルを設定してデフォルトで conda 環境をアクティブにする方法のみを説明しています。ただし、既存の Dockerfile のみを変更して、そこから特異点イメージを構築したいと考えています。

私がこれまでに試したことは、Dockerfile を次のように設定することです。

FROM opensuse/tumbleweed

ENV PATH /opt/conda/bin:$PATH
ENV PATH /opt/conda/envs/tensorflow/bin:$PATH

# Add conda environment files (.yml)
COPY ["./conda_environments/", "."]

# Install with zypper
RUN zypper install -y sudo wget bzip2 vim tree which util-linux

# Get installation file
RUN wget --quiet https://repo.anaconda.com/archive/Anaconda3-2019.07-Linux-x86_64.sh -O ~/anaconda.sh

# Install anaconda at /opt/conda
RUN /bin/bash ~/anaconda.sh -b -p "/opt/conda"

# Remove installation file
RUN rm ~/anaconda.sh

# Make conda command available to all users
RUN ln -s /opt/conda/etc/profile.d/conda.sh /etc/profile.d/conda.sh

# Create tensorflow environment
RUN conda env create -f tensorflow.yml

# Activate conda environment with interactive bash session
RUN echo ". /opt/conda/etc/profile.d/conda.sh" >> ~/.bashrc
RUN echo "conda activate tensorflow" >> ~/.bashrc

# Default command
CMD ["/bin/bash"]

Docker イメージをビルドした後、次のコマンドで Docker コンテナーを実行します。

docker run -t -d --rm --name=my_container opensuse_conda:latest

コンテナに次のように入力します。

docker exec -it my_container bash

結果は予想通り。シェル セッションは、(tensorflow) プレフィックスで示されるアクティブな「tensorflow」環境で直接開始されます。

この docker イメージから特異点イメージを作成するには、次を使用します。

sudo singularity build opensuse_conda.sif docker-daemon://opensuse_conda:latest

コンテナを次のように実行します。

sudo singularity run opensuse_conda.sif

ここで問題が発生します。「tensorflow」環境の代わりに、「base」環境がデフォルトでアクティブ化されます。ただし、特異点コンテナーを実行するときに、「テンソルフロー」環境をアクティブにしたいと思います。

docker コンテナーと特異点コンテナーの両方を実行するときにデフォルト環境が「tensorflow」になるように Dockerfile を変更するにはどうすればよいですか?

ご助力ありがとうございます!

4

1 に答える 1