Web App for ContainersでコンテナにSSHする

★★★ イベント情報 ★★★
◇【参加登録受付中】Kong Summit, Japan 2022◇
今年は12月15日に開催決定!最新情報とデモとともにKongと事例/ユースケースのご紹介などAPIエコノミーやマイクロサービスに関心のある開発者の方にとっては必見です。ぜひお申し込みください!イベントの詳細・お申込はこちら

こんにちは、サイオステクノロジー武井(Twitter:@noriyukitakei)です。今回はWeb App for Containersで稼働しているコンテナのシェルに入る方法を試してみます。ほぼ私の備忘録です。

最もメジャーな方法は、コンテナの中にSSHデーモンを立てる方法です。

MS公式のドキュメントに書いてありますので、それをベースにやってみます。

https://docs.microsoft.com/ja-jp/azure/app-service/tutorial-custom-container?pivots=container-linux#connect-to-the-container-using-ssh

そして、よく使うであろう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できたほうが便利です。

ということで簡単でしたが、現場からは以上です。





ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!


ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる