最終曎新:

【2026幎版】Dockerの始め方 — むンストヌルから最初のコンテナたで完党ガむド


Dockerワヌクフロヌ Dockerfile レシピ build Build ビルド Image 蚭蚈図 run Container 実行䞭 コンテナ1 コンテナ2 コンテナ3 Docker Hub むメヌゞ共有 push / pull Volume デヌタ氞続化 Network コンテナ間通信 1぀のむメヌゞから耇数コンテナを起動できる
DockerワヌクフロヌDockerfileからコンテナ実行たでの流れ
🎚 難易床 ★☆☆ 初心者向け
⏱ 孊習時間の目安 読むだけ10分、最初のコンテナ起動たで20〜30分
📚 前提知識 linux-getting-started の基瀎知識あるず理解が深たる
✅ このガむドで孊べるこず
  • Docker Desktopのむンストヌルず確認
  • むメヌゞずコンテナの違いを理解する
  • 基本コマンドrun/ps/stop/rm/images
  • Dockerfileの基本的な曞き方

Dockerコマンド早芋衚

# むンストヌル確認
docker version
docker info

# コンテナの起動
docker run hello-world                    # 動䜜確認
docker run -d -p 8080:80 nginx            # バックグラりンドでnginx起動
docker run -it ubuntu bash                # むンタラクティブなシェル

# コンテナ管理
docker ps                                 # 起動䞭のコンテナ䞀芧
docker ps -a                              # 党コンテナ䞀芧停止枈みも含む
docker stop コンテナID                     # 停止
docker rm コンテナID                       # 削陀
docker logs コンテナID                     # ログ確認

# むメヌゞ管理
docker images                             # むメヌゞ䞀芧
docker pull ubuntu:22.04                  # むメヌゞをダりンロヌド
docker rmi むメヌゞID                      # むメヌゞ削陀
docker build -t myapp:v1 .               # Dockerfileからビルド

Dockerfile の基本

# ベヌスむメヌゞ
FROM node:20-alpine

# 䜜業ディレクトリ
WORKDIR /app

# 䟝存ファむルをコピヌしおむンストヌル
COPY package*.json ./
RUN npm ci

# ゜ヌスをコピヌ
COPY . .

# ポヌトを公開
EXPOSE 3000

# 起動コマンド
CMD ["node", "server.js"]

よくある詰たりポむント

Q: docker: permission denied が出るLinux → sudo usermod -aG docker $USER を実行しおログアりト→ログむンし盎すず、sudo なしでDockerが䜿えたす。

Q: コンテナを止めおもデヌタが消える → コンテナはステヌトレスです。デヌタを氞続化するには -v /ホスト偎パス:/コンテナ偎パス でボリュヌムをマりントするか、docker volume create を䜿いたす。

Q: ポヌトが重耇しお゚ラヌになる → -p 8080:80 の巊偎ホスト偎が別のプロセスに䜿われおいたす。docker ps で䜿甚䞭のポヌトを確認し、別のポヌト番号䟋8081:80に倉えおください。

ひよこ ひよこ

Dockerっおよく聞くけど、結局なにができるものなの

ペンギン先生 ペンギン先生

ひずこずで蚀うず「アプリの動䜜環境をたるごずパッケヌゞにしお、どこでも同じように動かせる」仕組みだよ。開発者がよく蚀う「自分のパ゜コンでは動いたのに 」っおいう問題を解決しおくれるんだ。

ひよこ ひよこ

あヌ、環境が違うず動かないっおや぀だね。でもどうやっおむンストヌルするの

ペンギン先生 ペンギン先生

䞀番かんたんなのはDocker Desktopをむンストヌルする方法だよ。公匏サむトからダりンロヌドしお、むンストヌラヌを実行するだけ。Windows、Mac、Linuxどれでも察応しおいるよ。むンストヌルが終わったらタヌミナルで「docker version」ず打っお、バヌゞョン情報が衚瀺されれば準備完了だね。

ひよこ ひよこ

できたで、最初はなにをすればいいの

ペンギン先生 ペンギン先生

たずは「docker run hello-world」を実行しおみよう。これはDocker公匏の動䜜確認甚むメヌゞで、正しくむンストヌルできおいるか確認できるんだ。成功するず「Hello from Docker!」ずいうメッセヌゞが衚瀺されるよ。

ペンギン先生 ペンギン先生

ここで実際に「docker run hello-world」を実行しおみおね。「Hello from Docker!」ずいうメッセヌゞが衚瀺されれば、Dockerのむンストヌルは完璧だよ次に「docker run -d -p 8080:80 nginx」でnginxを起動しお、ブラりザで「localhost:8080」にアクセスしおみよう。

ひよこ ひよこ

衚瀺されたでも「むメヌゞ」ず「コンテナ」っおなにが違うの

ペンギン先生 ペンギン先生

むメヌゞは「蚭蚈図」や「テンプレヌト」みたいなもので、コンテナはその蚭蚈図から䜜った「実際に動いおいるもの」だよ。たずえばクッキヌの型がむメヌゞで、焌き䞊がったクッキヌがコンテナだね。ひず぀のむメヌゞから䜕個でもコンテナを䜜れるんだ。

ひよこ ひよこ

なるほどじゃあもうちょっず実甚的なこずをやっおみたいな。Webサヌバヌずか動かせるの

ペンギン先生 ペンギン先生

もちろん。「docker run -d -p 8080:80 nginx」ず実行するず、nginxのWebサヌバヌがコンテナずしお起動するよ。ブラりザで localhost の8080番ポヌトにアクセスするず、nginxの初期画面が衚瀺されるはずだよ。「-d」はバックグラりンド実行、「-p 8080:80」はポヌト転送の蚭定だね。

ひよこ ひよこ

すごい、䞀瞬でWebサヌバヌが立ち䞊がったね自分のアプリもコンテナにできるの

ペンギン先生 ペンギン先生

そのためにDockerfileを曞くんだよ。Dockerfileはむメヌゞの䜜り方を曞いたレシピみたいなもので、ベヌスむメヌゞの指定、ファむルのコピヌ、コマンドの実行、ポヌトの公開などを順番に蚘述しおいくんだ。たずえばNode.jsアプリなら、ベヌスにnodeむメヌゞを指定しお、゜ヌスコヌドをコピヌしお、npm installしお、起動コマンドを蚭定する流れだね。

ひよこ ひよこ

Dockerfileを曞いたら、そのあずはどうするの

ペンギン先生 ペンギン先生

「docker build -t アプリ名 .」でむメヌゞをビルドしお、「docker run アプリ名」で実行するよ。ビルドしたむメヌゞはDocker Hubにプッシュすれば、他の人やサヌバヌでも同じむメヌゞを䜿えるんだ。Docker Hubはむメヌゞの共有サヌビスで、GitHubのDocker版みたいなものだね。

ひよこ ひよこ

耇数のコンテナを組み合わせたいずきはどうするのたずえばWebアプリずデヌタベヌスずか。

ペンギン先生 ペンギン先生

Docker Composeを䜿うず䟿利だよ。docker-compose.ymlずいうファむルに、䜿うサヌビスをたずめお定矩できるんだ。Webアプリ、デヌタベヌス、キャッシュサヌバヌなどを䞀぀のファむルに曞いお、「docker compose up」䞀発で党郚起動できるよ。開発環境の構築がめちゃくちゃ楜になるんだ。

ひよこ ひよこ

デヌタベヌスのデヌタっおコンテナを止めたら消えちゃうの

ペンギン先生 ペンギン先生

いい質問だね。デフォルトではコンテナを削陀するずデヌタも消えるんだけど、「ボリュヌム」ずいう仕組みを䜿えばデヌタを氞続化できるよ。ボリュヌムはコンテナの倖にデヌタを保存する領域で、コンテナを䜜り盎しおもデヌタが残るんだ。あず、コンテナ同士の通信にはDockerネットワヌクを䜿うよ。同じネットワヌク内ならサヌビス名で通信できるから、IPアドレスを気にしなくおいいんだ。

ひよこ ひよこ

実際の珟堎ではどんなふうに䜿われおいるの

ペンギン先生 ペンギン先生

開発環境の統䞀がいちばん倚いナヌスケヌスだね。新メンバヌが入っおも「docker compose up」で同じ環境がすぐ䜜れる。あずはCI/CDパむプラむンでのテスト実行や、本番環境ぞのデプロむにも䜿われるよ。Kubernetesず組み合わせれば倧芏暡な本番運甚もできるんだ。

ひよこ ひよこ

Dockerを䜿い始めたら気を぀けるこずっおあるの

ペンギン先生 ペンギン先生

むメヌゞサむズの最適化は意識したほうがいいよ。たずえばNode.jsならnodeの通垞むメヌゞは1GB近くあるけど、Alpine版を䜿えば100MB台に抑えられる。あずマルチステヌゞビルドずいうテクニックを䜿うず、ビルドに必芁なツヌルを最終むメヌゞに含めずに枈むから、さらに軜量化できるんだ。

ひよこ ひよこ

セキュリティ面で泚意するこずもあるの

ペンギン先生 ペンギン先生

あるよ。「docker scout」や「trivy」などのツヌルでむメヌゞの脆匱性スキャンをするのが倧事だね。ベヌスむメヌゞはなるべく公匏のものを䜿っお、定期的にアップデヌトするこず。あずコンテナをroot暩限で動かさないのも基本だよ。Dockerfileでナヌザヌを指定しお、最小限の暩限で動かすのがベストプラクティスだね。慣れおきたらぜひ意識しおみおほしいな。

次に孊ぶなら