LoginSignup
4
4

More than 3 years have passed since last update.

CentOS, Ubuntu, DebianのDockerイメージ with SSH & SFTP

Last updated at Posted at 2020-01-01

はじめに

明けましておめでとうございます。
無事に年も明けてやっと少し落ち着きました。

今回は新年早々、自作Dockerイメージを公開してみます。
令和初元旦の記念投稿です。

公開イメージ

Dockerの各種ベースイメージにSSHとSFTPの接続機能を追加したイメージです。
簡単な使い方も付けています。

コメントやDocker Hubで星を付けて頂けると励みになります。すごく。
2020/01/13にDebianイメージを追加しました。
Dockerfileのビルド過程や実行環境の解析に活用してください。

経緯

作成の経緯として、Dockerでの柔軟なビルドや調査にはベースイメージにsshdを追加したものが必須であるにも関わらず、世界中で各自が同じようなイメージを自作しているのが現状でした。
すでに誰かによって公開されているイメージを使うにしても、どこか動作が変だったりして結局は自分で調査して改良する事になります。

そのような不毛な車輪の再発明を終わらせるべく、これまでシンプルかつ信頼性の高いイメージの作成に取り組んで参りました。なんちゃって。

要するに、せっかく作ったので役に立つなら使ってください的な投稿です。
試しビルドの削減はもちろん、アイデア次第で色々と便利な使い方ができると思います。

簡単な使い方 (Ubuntuの例)

  • イメージの概要
FROM ubuntu:18.04  

ENV TZ Asia/Tokyo
ENV ROOT_PASSWORD root

EXPOSE 22
  • コンテナの起動例
    起動後は、使い慣れたSSHターミナルやSFTPクライアントからアクセスすることが出来ます。
    初期設定は root/root でログイン出来ます。

基本的には、SSHターミナルでDockerfileのRUNブロックを順番にコピペするだけで、世界中で公開されているほとんどのイメージのビルド過程や実行環境を再現出来ます。

ENVは環境変数としてexportコマンドに置き換えます。
そして、Dockerfileから作成されたイメージの起動を再現するには、CMDの内容を引数にしてENTRYPOINTで指定されているファイルを実行します。
(ここまで来ると、凄まじくDockerfileへの理解が進む事でしょう)

docker run -d --name ubuntu-sshd \  
       -e TZ=Asia/Tokyo \  
       -e ROOT_PASSWORD=root \  
       -p 8022:22 \  
       takeyamajp/ubuntu-sshd

必要に応じて、公開するポートやボリュームを追加することが出来ます。

通常ここで追加するのは、Dockerfileのexportやvolumeに記述されている内容になるでしょう。

docker run -d --name ubuntu-sshd \  
       -e TZ=Asia/Tokyo \  
       -e ROOT_PASSWORD=root \  
       -p 8022:22 \  
       -p 8080:80 \  
       -v /my/own/datadir:/var/www/html \  
       takeyamajp/ubuntu-sshd

この例では、WEBサーバー関係を調査するために、追加でポート80とDocumentRootのディレクトリを公開しています。

例えば、コンテナ内でapache2をインストールして/usr/sbin/apache2 -DFOREGROUNDのようなコマンドを実行すれば、実際にブラウザーからアクセス可能なWEBサーバーとして機能させる事が出来ます。
このようにして、Dockerfileを書いてビルドする前に、このコンテナで確認する事が出来ます。

  • タイムゾーンには、Linuxで設定できるタイムゾーンをそのまま指定することが出来ます。
    海外在住な人も心配ご無用です。

タイムゾーンの一覧
https://www.unicode.org/cldr/charts/latest/verify/zones/en.html

  • ログは「docker logs」に出力します。
    このコンテナへのSSH接続開始、認証、切断などの情報が出力されます。

次のコマンドでリアルタイムにログを参照する事が出来ます。

docker logs -f ubuntu-sshd

以上です。
それでは今年も良いDockerライフを!

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4