Docker コンテナの中で色々試すのに root 権限のままだと困ることもあるので、 一般ユーザー権限でログインできる sshd を起動したコンテナを作りました。

検証環境

  • Docker Community Edition : 18.06.0-ce-mac70 (26399)
    • Engine: 18.06.0-ce
    • Compose 1.22.0

最終的な Dockerfile

前回は root 権限で入れるようにするために PermitRootLogin や PAM の設定も変更していましたが、 一般ユーザー権限で入るので不要です。

X11 が不要なら xauth や AddressFamily も不要です。

ユーザー名は ubuntu にして、サンプルのパスワードは今回も screencast にしました。 一般的な ubuntu 環境に合わせて sudo も使えるようにしておきます。

シェルも bash を指定して、補完が使えるように bash-completion もいれておきます。

FROM ubuntu:18.04

RUN apt-get update && apt-get install -y openssh-server sudo bash-completion
RUN mkdir /run/sshd
RUN useradd -m -s /bin/bash ubuntu && gpasswd -a ubuntu sudo
RUN echo 'ubuntu:screencast' | chpasswd

# For X11Forwarding
RUN apt-get install -y xauth
RUN echo AddressFamily inet >> /etc/ssh/sshd_config

COPY --chown=ubuntu:ubuntu authorized_keys /home/ubuntu/.ssh/authorized_keys

EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

docker-compose.yml

以下の内容で docker-compose.yml を作成しておけば Dockerfile の変更は docker-compose builddocker-compose up -d で、 docker-compose.yml の変更は docker-compose up -d で反映できました。

version: '2.3'
services:
  x11-example:
    build: .
    ports:
    - "2222:22"

使ってみる

ssh -X -p 2222 ubuntu@localhost で入って sudo apt install x11-apps して xeyes などで動作確認できました。

Disqus Comments

Kazuhiro NISHIYAMA

Ruby のコミッターとかやってます。 フルスタックエンジニア(って何?)かもしれません。 About znzに主なアカウントをまとめました。

znz znz


Published