20
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【超初心者】コンテナ作ってDockerで動かそう【Photoprism】

20
Last updated at Posted at 2026-07-10

こんにちは。新卒のSEの卵です。
Kubernetesについて研修で学ぶ機会がありました。
そこで触れたコンテナとDockerという概念について、実際に触れてみたくなったので
簡易的なコンテナを作って、Dockerで動かすということに挑戦してみました。

windows11のパソコンで行いました。
なお、今回はこちらの雑誌の記事を参考にしています。
Software Design 2026年5月号 ITインフラ集中講座

コンテナとDockerってなんだ

コンテナとは

「アプリの実行に必要な荷物を丸ごと詰め込んだ、持ち運び可能な魔法の箱」のイメージ。
パソコンの環境が変わっても、箱の中身はいつでもどこでも全く同じように動いてくれる。

Dockerとは

「コンテナを、誰でも簡単に作ったり壊したりできるようにした超便利ツール」のイメージ。大変な環境構築が、これを使うだけで一瞬で終わるようになる。

Kubernetesとは 

「大量のコンテナが壊れないように、24時間体制で見守ってくれる優秀な管理人」のイメージ。K8sと略されることが多い。
箱が急に壊れたら新しいものに自動で取り替えたり、アクセスが増えたら箱を増やしたりしてくれる。Dockerに指示を出して、コンテナの大量作成や削除も行える。
今回の検証においては割愛。

必要なものと導入手順

PowerShell

今回使用するターミナルです!
PowerShellを使ってWSL(Ubuntu)を呼び出し、後述のDocker Desktopの上でコンテナを動かします。

WSL

Windows上でDockerを動かすにはLinuxの土台が必要です。
今回はWSLと呼ばれる中にUbuntuが入っているパッケージを用意します。
PowerShellに『wsl --install』と打つとインストールできます。

image.png

インストールが完了するとUnixのユーザーアカウントの作成をPowerShell上で求められるので、IDやパスワードを登録すると完了です!

Docker Desktop

Docker社が開発した、Dockerの実行に必要なリソースをまとめて提供するプロダクト。
Windows上でLinux(WSL)と連携し、コンテナを簡単に作成・管理できるようにしてくれるツールです。
image.png

こちらの公式サイトからインストールしました。
https://www.docker.com/ja-jp/products/docker-desktop/

PhotoPrism

今回コンテナの中に入れるアプリケーションです。
自分のPC(サーバー)の中に作れる自分専用のGoogleフォトのようなシステム。
image.png

今回はDocker Hubというところからイメージを利用してコンテナ内にPhotoPrismを作成します。
Dockerには Docker Hubという世界中のアプリの設計図(イメージ)が集まるインターネット上の図書館があります。後述する作成コマンドを実行すると、Dockerが自動でこの図書館からPhotoPrismの設計図を取ってきて、その設計図通りにアプリが組み込まれたコンテナを一瞬で丸ごと作ってくれるんです。便利!

Dockerを起動させる

Docker Desktopをインストールしたら早速Dockerを動かしましょう!
とはいえ手順はDocker Desktopを起動するだけです。

image.png

ローディングが長い場合は一度PCを再起動してから立ち上げてみてください。
これでコンテナを動かすDockerの準備が整いました!

コンテナを作成する

次に、Dockerにコンテナを作らせます。
Docker Desktopの画面からでもコンテナを作ることができますが、今回は細かな設定を指定するために、PowerShellからコマンドで指示を出します。
以下のコマンドをPowerShellに入力してください。

# ※行末の「`」の直後にスペースを入れないように注意してください
# ※YOUR_USERNAME の部分を自由なユーザー名に変更してください
# ※YOUR_PASSWORD の部分を自由なパスワードに変更してください

docker run -d `
  --name photoprism `
  --security-opt seccomp=unconfined `
  --security-opt apparmor=unconfined `
  -p 2343:2342 `
  -e PHOTOPRISM_UPLOAD_NSFW="true" `
  -e PHOTOPRISM_ADMIN_USER="YOUR_USERNAME" `
  -e PHOTOPRISM_ADMIN_PASSWORD="YOUR_PASSWORD" `
  -v /photoprism/storage `
  photoprism/photoprism:251130

↓コードの解説はこちら

#こちらはコピペ非推奨

docker run -d ` #バックグラウンドで起動してね
  --name photoprism ` #コンテナの名称設定
  --security-opt seccomp=unconfined `  #コンテナのセキュリティ制限を
  --security-opt apparmor=unconfined ` #「一時的に無効(制限なし)」にする設定
  -p 2343:2342 ` #ホストの2343ポートをコンテナの2342番に転送
  -e PHOTOPRISM_UPLOAD_NSFW="true" `#どの写真のアップロードも許可する
  -e PHOTOPRISM_ADMIN_USER="YOUR_USERNAME" ` #ユーザー名設定
  -e PHOTOPRISM_ADMIN_PASSWORD="YOUR_PASSWORD" ` #パスワード設定
  -v /photoprism/storage ` #コンテナの中のデータを保存する場所(ボリューム)を作る設定
  photoprism/photoprism:251130 #DockerHubにあるシステム設計図を指定

※`は、複数行のコマンドを動かす際に必要な記号なので外さず実行してください。

コンテナのセキュリティを一時的に無効にするのは、PhotoPrismというアプリ自体の高度なシステム操作をコンテナやDocker側のセキュリティがはじかないようにするためするためです。

 また、-p以降はWindowsの2343番ポートへのアクセスを、コンテナ内の2342番ポートへ転送する設定です。これによって、コンテナ専用のIPアドレスをいちいち調べなくても、使い慣れたWindowsのブラウザから localhost:2343 でコンテナ内のアプリに繋がるようになります!

 ちなみに右側の2342番というコンテナ番号はPhotoPrismの公式側が指定したコンテナ番号です。そのため、異なる数値を入力すると起動しません。左側のポート番号は、1024番〜65535番の間で、かついま自分のWindowsで他のアプリが使っていない番号であれば、どの番号でも大丈夫です!

挙動確認

作ったコンテナが無事に動くか確認してみましょう。
URLからローカルホストに接続します。
http://localhost:ポート番号をここに入力 
(先ほどのコマンドで指定したポート番号をURLにいれてください。)

image.png

ログイン画面が表示されたら成功です!
無事にコンテナの中にPhotoPrismというアプリケーションを入れることができました。


先ほど設定したユーザー名とパスワードを入力してログインしてみましょう。

image.png

ログイン成功です!


image.png
せっかくなのでPhotoPrismを使用してみましょう。
こんな感じでアップロードした写真を保存することができます。便利!


以上で検証終了です。

検証環境なので、成功を確認したらコンテナを削除してください。

おわりに

実践することで体系的にDockerやコンテナという概念を理解できました。
業務に使うコンテナは大量かつもっと複雑な構成をしていると思うので、Kubernetesのコマンドの知見を深めつつ業務に取り組んでいきたいです。お読みいただきありがとうございました。

20
1
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
20
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?