Help us understand the problem. What is going on with this article?

Dockerコンテナ内でVSCodeを起動する(Ubuntu)

More than 1 year has passed since last update.

はじめに

dockerコンテナ内でVSCodeを起動することができたので、方法を記したいと思います。

VSCodeの拡張機能を使ってdockerコンテナで動くコードをリモートデバッグする方法は以下の記事に載っていますが、個人的には今回紹介するようにdockerコンテナ内でVSCodeを起動する方がシンプルで好みです。
https://qiita.com/Ryuichirou/items/6327ab5012ca1729d72f

Dockerfile

Dockerfileの内容について説明します。

ベースイメージとワークディレクトリの指定

この部分は本筋とは関係ないので、お好きなように。

FROM nvidia/cuda:9.0-cudnn7-devel-ubuntu16.04

WORKDIR /root
ENV HOME /root

apt-get

必要なパッケージをapt-getでインストールします。
gdebiは、debパッケージを依存関係を解決しながらインストールするためのツールです。

RUN apt-get update && \
    apt-get install -y --no-install-recommends \
    wget \
    git \
    libssl-dev \
    libbz2-dev \
    libsqlite3-dev \
    libreadline-dev \
    zlib1g-dev \
    libasound2-dev \
    libxss1 \
    libxtst6 \
    gdebi

VSCodeのインストール

RUN wget -O vscode-amd64.deb https://go.microsoft.com/fwlink/?LinkID=760868
RUN yes | gdebi vscode-amd64.deb
RUN rm vscode-amd64.deb

pythonのインストール

pyenvを使ってpythonをインストールします。
と言っても、本記事の内容はpython以外の言語にも簡単に適用できるでしょうし、また、pythonのインストールはpyenv以外の仕組みを利用しても構いません。

RUN git clone https://github.com/yyuu/pyenv.git ~/.pyenv
ENV PYENV_ROOT $HOME/.pyenv
ENV PATH $PYENV_ROOT/shims:$PYENV_ROOT/bin:$PATH
RUN pyenv install 3.6.6
RUN pyenv global 3.6.6

dockerイメージのビルドとコンテナの起動

イメージのビルド

nvidia-docker build -t kanosawa/vscode .

コンテナの起動

以下の記事を参考にさせていただきました。
Dockerコンテナの中でGUIアプリケーションを起動させる

xhost local:
nvidia-docker run -e DISPLAY=$DISPLAY \
                  -v /tmp/.X11-unix:/tmp/.X11-unix \
                  -it kanosawa/vscode

コンテナ内でVSCodeを起動する

VSCodeをsuper userで起動する場合、以下のオプションが必要なようです。
起動した後は、ポップアップに従ってPython拡張機能をインストールすれば、デバッグ実行可能になります。

code --user-data-dir

おわりに

以上の手順で、Dockerコンテナ内でVSCodeを起動できるようになります。

書いた後に読み返してみると、タイトル通りの内容というよりは「DockerfileでVSCodeをインストールする方法」と「Dockerコンテナ内でGUIアプリケーションを起動する方法」の合わせ技でしかないですね。。。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away