私はUbuntuが好き

DockerでUbuntuを立ち上げ、pyenv環境まで構築したい(願望)。

背景

M1 Macが発売されて以降、MacOSでのpyenvを用いたpythonの環境構築がめんどくさい。 いっそのこと、Ubuntu上を立ち上げてめんどくさいことなしで、armでのPython環境を構築すれば一気に解決(名案!)。

ホストマシン

MacBook Air 2020, M1, 16GB
OS: MacOS Big Sur 11.6
Docker version 20.10.6, build 370c289

Dockerfile

Ubuntuの20.04をOSとして環境構築する。私はUbuntuが好き。 どれほど好きかというと、今年研究室に来た新しいサーバー6台が全てubuntuになりました(単に先生がそうしてるだけかも)。 研究室に置いているゲーミングマシンもubuntu入れました。windowsにさよならバイバイ。 てかCent OSのプロジェクト終了するんだ。。

github.com

を参考に、

sudo apt-get update; sudo apt-get install make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

を実行する。apt-getはubuntu18.04のコマンドなので、20.04ではaptに書き換える.

FROM ubuntu:20.04
RUN mkdir -p usr/lib
RUN apt update -y
RUN apt install -y sudo
RUN apt install -y tzdata
RUN apt install -y build-essential

RUN sudo apt update; sudo apt install make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

# setting user
ARG USER_NAME
ARG GROUP_NAME
ARG UID
ARG GID
ARG PASSWORD

ENV HOME /home/$USER_NAME
ENV PYENV_ROOT $HOME/.pyenv
ENV PATH $PYENV_ROOT/bin:$PATH

# add sudo to user
RUN groupadd --gid ${GID} ${GROUP_NAME} && \
    useradd -m -s /bin/bash -u ${UID} --gid ${GID} -G sudo ${USER_NAME} && \
    echo ${USER_NAME}:${PASSWORD} | chpasswd && \
    echo "${USER_NAME}   ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers

RUN git clone https://github.com/pyenv/pyenv.git ${HOME}/.pyenv
RUN echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile
RUN echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile
RUN echo 'eval "$(pyenv init --path)"' >> ~/.profile
RUN pyenv install -v 3.9.7


# switch root to user
USER ${USER_NAME}
WORKDIR /home/${USER_NAME}/

# copy local files into image
COPY --chown=${USER_NAME}:${USER_NAME} . .

次回、Docker + CUDAの使い方。