1. Docker環境構築
https://docs.docker.jp/engine/examples/running_ssh_service.html
を参考にしてDockerFileファイルを作る。
ファイル名はpython-testとしている。
FROM python
RUN apt-get update && apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo 'root:creencast' | chpasswd
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
# SSH login fix. Otherwise user is kicked off after login
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
-
[補足]
- PermitRootLoginの初期値が、「without-password」から「prohibit-password」に変わっていたので修正している。
- rootユーザのパスワード設定処理の「root:creencast」は適切に変更すること。
- rootユーザで開発したくない場合は、DockerFileに以下のようにユーザ追加命令を追加する。
RUN useradd --shell /bin/bash -u 1000 -m user && echo "user:user" | chpasswd
-
以下のコマンドを上記のDockerFileがあるディレクトリで実行する。
docker build -t python-test -f python-test ./
docker run -d -P --name python-test python-test
-
docker port python-test 22
を実行してコンテナのポート22が、ホストのどのポートに割り当てられているか確認する。
以降のコマンドは、以下のポート番号を例として使う。
0.0.0.0:49153
:::49153
2. VScodeインストール
- https://code.visualstudio.com/download からdebファイルをダウンロード
- sudo apt install ./download/code_1.56.2-1620838498_amd64.deb
※:dpkgでインストールするやりかたは古いらしい。 - ExtenstionsでRemote-SSHをインストールする。
3. VScodeでDocker環境にsshする
- VSCode左側の「Remote Explore」>「SSH TARGET」> 「+」ボタンを押す。
- ログインコマンドを聞かれるので、
ssh root@0.0.0.0 -p 49153
と入力する。 - 設定の保存先を聞かれるので、
/home/<ユーザ名>/.ssh/config
を選択する。(他の選択肢はよくわからない) - 「SSH TARGET」に「0.0.0.0」が追加されるので選択する。
- ログインパスワードを聞かれるので、入力する。
- 下段にbashが表示されればOK。あとはDockerのコンテナ内の環境で開発ができる。
補足
ホスト側でインストールしたextensionsはログイン先では使用できない。
ログイン先毎にインストールする必要がある。ホスト側でインストールしたものを使用可能する方法があるかは不明。