今まで紹介してきたコンテナは全てUbuntuベースでしたが、こちらはCentOSベースで、ブラウザ経由でもリモートデスクトップでもアクセスできるようです。SSHやブラウザ経由でターミナルにアクセスできたり、ファイル管理(アップロード・ダウンロードも可)もできたり、ブラウザ版VSCodeも使えたり、デフォルトでHTTPSで暗号化できたりと、かなり機能盛りだくさんです。ポート8080がWebアクセス(https)用、22がssh用、3389がリモートデスクトップ用になっているようなので、それぞれを-pでマッピングしています。機能豊富な分イメージがでかいです。ブラウザでアクセスしてみます。機能盛りだくさんのため、機能毎にアクセスするパスが決まっているようで、Linuxデスクトップにアクセスしたい場合、https://サーバIP:8080/desktop/にアクセスします。オレオレ証明書のため証明書エラーが出ますが、エラーを無視して接続すると、ベーシック認証画面がでてきます。ドキュメントによると、Nginxがフロント(リバースProxy)にいて、PAMを使って認証しているようです。入力すると、以下の画面が表示されました。Spaceを押すとONにできました。日本語入力もデフォルトの設定で問題なくできます。今までのコンテナ中で一番手軽です。リモートデスクトップでも繋いでみます。起動時に指定した8081ポートに繋いでみると、先程ブラウザで起動したターミナルが見えます。ブラウザとリモートデスクトップで同じ画面が表示されるようです。ついでに他の機能にもアクセスしてみました。ブラウザからhttps://サーバIP:8080/term/にアクセスすると、ログインプロンプトが出てき、先程のIDとパスワードでログインできました。ブラウザからhttps://サーバIP:8080/file/にアクセスすると、以下のようにファイルブラウザが表示されました。操作端末との間でファイルやりとりするのも簡単そうです。Codeの画面が表示されました。ここまでお膳立てされていると、ちょっとした開発ならすぐにでも開始できそうです。まとめいろいろなコンテナを起動してみましたが、日本語対応を謳っていても実際はうまく起動できなかったり日本語入力できなかったりするものが多い印象です。docker-centos-xfce-jaの二択かなと思いました。いうツールを紹介します。GO製ツールで実行ファイルはシングルバイナリファイルのため、インストールも簡単です。GitHubのリリースページから対象のOSやアーキテクチャのtar.gzファイルをダウンロードし、展開して出てくるlegoファイルを、Linuxなら/usr/local/bin/辺り(PATHが通ったディレクトリ)に放り込むだけです。Webサーバが構築されており、そのサーバにドメインが割り当てられている場合、以下のようなコマンドで証明書を取得できます。Webサーバのドキュメントルートです。指定した/etc/legoに保存されます。各引数の値は、適宜環境にあわせて修正してください。ドメインの所有者有無を確認するためのファイルが配置されます。いうディレクトリが作成され、ドメイン名が付与されたファイルが4つ作成されます。Encryptの証明書が使えるようになります。Encryptの証明書は3ヶ月で期限が切れるため、定期的に更新が必要になります。証明書の更新は、runの代わりにrenewを使います。30を指定して、証明書の期限が30日を切った場合に更新処理が実行されるように設定しています。更新後に実行するスクリプトを指定します。ここでは/usr/local/bin/restart-server.sh(予め作成)を指定し、Webサーバを再起動しています。この処理を1ヶ月に1回ぐらいcron等で実行してあげれば、自動で証明書の更新も可能です。2020年09月22日00:56コンテナを使ってWebサイトの脆弱性スキャンカテゴリIT技術セキュリティとりあえず、サイトの脆弱性調査のためにフルスキャンしたい場合、Dockerがインストールされている環境で以下のコマンド叩けばできます。他人のサイトに向けて以下のスキャンを試すと、不正アクセスで訴えられる可能性があるため絶対に行わないでください。scanlog.txtなお、フルスキャンはかなり時間がかかります。(CentOS8)からは、Dockerが同梱されておらず、代わりにPodmanが提供されています。PodmanはDockerのようにデーモンがおらず、機能もシンプルです。ここでは、Podmanで起動したコンテナのログの保存方法について紹介します。コマンドで起動したコンテナのログは、通常はpodmanの管理領域に保存され、コンテナを削除すると削除されてしまいます。これだと、実際の運用では古いログが参照できなくて困ってしまいます。これを避けるには、ログドライバーをコンテナ起動時に指定します。いうオプションを付けると、コンテナのログがjournaldに出力されるようになります。出力されたログは、デフォルトでrsyslogを経由して/var/log/messagesに保存されるため、これによりコンテナのログを永続化することができるようになります。時に毎回付与する必要がありそうです。このメタデータが付与されませんでした。この不具合は、GitHubのこちらのIssueで修正されたようなので、そのうち正常に本メタデータも保存されるようになりそうです。