こんにちは、サイオステクノロジー武井(Twitter:@noriyukitakei)です。今回はWeb App for Containersで稼働しているコンテナのシェルに入る方法を試してみます。ほぼ私の備忘録です。
最もメジャーな方法は、コンテナの中にSSHデーモンを立てる方法です。
MS公式のドキュメントに書いてありますので、それをベースにやってみます。
そして、よく使うであろうDebianを前提とします。こちらもDockerの公式ドキュメントに書いてあります。
https://docs.docker.jp/engine/examples/running_ssh_service.html
ということで以下のDockerfileを作りました。SSHデーモンの構築の部分だけ一部抜粋してます。
RUN apt-get update && apt-get install -y openssh-server RUN mkdir /var/run/sshd RUN echo 'root:Docker!' | chpasswd RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config RUN sed -i 's/#Port 22/Port 2222/' /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 2222 8080
MS公式ドキュメントからは読み取れないのですが、Web App for ContainersのコンテナにSSHするためには、以下の要件があります。
- SSHのポート番号が2222であること
- ユーザー名とパスワードは、root / Docker!であること
そしてちなみにですが、debianのbusterでsshdをインストールすると、Dockerの公式マニュアルとは異なり、/etc/ssh/sshd_configが#PermitRootLogin prohibit-passwordとなっている(Dockerの公式マニュアルではPermitRootLogin prohibit-password)ので、そのあたり書き換えなければなりません。
このDockerfileをもとにコンテナ作れば、Web App for Containersの管理画面からSSHできます。なにかとSSHできたほうが便利です。
ということで簡単でしたが、現場からは以上です。