Tag: docker

DockerDesptopから画面を取るまで

今回はDocker Desktop for Linuxから画面を取るまでの試行錯誤、およびシンプルなdockerからの変更点などを解説します。4/15から4/24までの格闘日誌になります。ちょうど職場でのプレッシャが起因した休職に入ったのですが、今もすごく頭が痛いです。治るのかなこれ? 普通のDockerから画面を取る場合 普通のdockerから画面を取る場合は、下記3つが必要になります。 まずは1つ目、ソケットファイルの共有から解説します。まずはホストにあるソケットファイルの実体ですが、こちらは簡単に見つけることができます。先頭がd(directory)ではなく、s(socket)になっていることが証拠です。 2つめの$DISPLAY変数ですが、こちらはホストでは下記のようになっています。 $DISPLAY変数の構成は(ホスト名):(ディスプレイ番号).(スクリーン番号)で表現されます。今回はローカルホストであるため、ホスト名は省略されており、理由は良くわかりませんがスクリーン番号も省略されています。コンテナから画面を取る際も、localhostの画面へ表示を行いたいので$DISPLAY変数は同じで良いということですね。最後の画面表示の許可ですが、通常Xサーバへは決められたユーザしかログインできないのでそれを解除する作業になります。単純にxhost+と端末で入力するだけなので、非常に簡単な作業ではあります。ここまでの作業を自動でやってくれるプログラムはここで公開してあります。 DockerDesktopではうまく行かない 表題の通り、上記の手法をDockerDesktopで再現しようとしてみてもうまくいきません。エラーメッセージは下記の通りです。 このエラーは$DISPLAYで指定されている:0の画面へアクセスしようとしたら開けなかったというメッセージになり、通常はxhost + を行わなかった時に発生します。念の為xhost + を再度やってみても同じ回答が来るので、今回は違う原因で発生していると推測できます。幸いなことに、前回DockerDesktopは通常版とは違い、VM上で動作している説が発見できているので、今回は「別マシンから自マシン上へ画面を転送する」という技術で解決する必要がありそうです。 DockerDesktopからホストへのSSHを可能にする さて、情報の転送といえばSSHですね。今まで横着してSSH関連についてあまり勉強してこなかったのですが、今回はOpenSSH入門(河本安武さん著)を使ってしっかり活用して行こうと思います。まず、コンテナ側にあるアプリがssh-client, ローカルマシン側がssh-serverになるため、コンテナにopenssh-clientが入っているか確認しました。ここはデフォルトで入っていたので特筆する作業は無いです。一方でローカルホストの方にopenssh-serverが必要なのに入れていなくてかなり長い間格闘しました。ChatGPT先生の介抱もあってなんとか気づけたのですが、皆様もこのような初歩的なミスに引っかからないようにしましょう。ローカルホストへのssh-serverのインストールは下記の通りになります。 sudo apt install openssh-server ホスト上のSSH開通実験 まずはsshが正しく可能かどうか確認しましょう。私の場合、最初にこの開通実験を行っていなかったため、問題の切り分けに時間がかかりました。反省を兼ねてここで当たり前の確認作業を記述します。このセクションでやっておくべきことは「ホスト端末」→「ホスト端末」へのSSHが成功するかどうかの確認になります。これ自体は下記の方法で実行できます。 ssh username@localhost ホスト→コンテナへのSSH ホスト→ホストのSSHが成功することが確認できたあとは、ホスト→コンテナのSSHを試してみましょう。ちなみに私はここで躓きました。まずはエラーメッセージから。 $ssh…

WordPressの構成を, DD4Lを使って学び直す

こんにちは。最近、精力的に活動しているRockinWoolです。今日はDocker Desktop for Linuxを使ってWordPressをより理解し、上手に活用することを目標に調査していきます。WordPressを雰囲気で使っている人々、Docker Desktop for Linuxに興味がある方に刺さってくれれば嬉しいですね。(逆にいえば、皆様には私のスキルの低さを温かい目で見守ってもらえばと思います) 1. 現在のWordPress環境:予測と懸念 現在、ロリポップさんのサーバをお借りし、WordPressを使って記事を作成しています。WordPressはロリポップさんのサーバ側に用意していただき、LocalのWeb browserからアクセスしております。ロリポップさんのサーバにはムームーさんのドメインをお借りしてアクセスしておりますので、現在の環境構成は下図のようになっていると予測しております。この時点で危惧すべきことは、資産がサーバ側にあるということです。つまり、何らかの状況でLolipopさんへの支払いが遅れたりした際には、一発でこの記事を含めたすべての情報が失われる危険性があるということです。 2. WordPress環境を試しに構築してみる 理解できないものに関しては、まずローカルで環境を作ってみるのが一番良いと思います。ただし、なるべく新品のローカルUbuntu環境を荒らしたくないので、Dockerを使って再現していきます。 2.1 Docker Desktop for Linux(DD4L)環境の構築 今回はこちらを使いながら確認していきます。まずはDocker Desktopをインストールしていきます。普段はCLIでdockerコンテナを使っているのですが、かねてよりナウな仕組みを使って高速化を狙うべくDockerDesktopも触ってみたいと思っていました。ちなみにDockerDesktopの有料化が先日話題になっておりましたが、FAQでは個人レベルであれば無料である旨が記載されています。 インストール作業は非常に簡単で、公式配布サイトに行ってdebパッケージを取得&apt installでインストールするだけです。 2.2 WordPressコンテナの作成 WordPressコンテナについても公式サイトからGithubの説明ページに飛ぶことで作り方がわかるようになっているようです。試しにやっていきましょう。まずは空のプロジェクトを作れと言われているので、単純に作業場所を作ります。その上でdocker-compose.ymlを作ることを指示されています。docker-compose.ymlの記述は下記の通りです。 雑な解説ですが、このdocker-compose.ymlではdb(database)とwordpressの2つのserviceが動いています。また、volumesでホストのdb_dataとwp_dataフォルダを各コンテナと共有しています。ちなみにcommand行がイマイチよくわかっていなくて、デフォルトのコマンドの上書きとしか日本語公式には書かれていないんですよね。ちょっと宿題にしておきます。 2.3 コンテナの起動とWordPressの設定 上記のいつものコマンドをdocker-compose.ymlのあるディレクトリで実行すればコンテナが作成され、自動的に動き出します。今回はここでDocker…