blog.saqu.dev
Last updated on

金欠高校生はdockerを使ってみたい!


Dockerとは

Dockerは、コンテナ仮想化技術を使ってアプリケーションをパッケージ化し、簡単に配布・移動・実行できるようにするプラットフォームです。 コンテナはアプリケーションとその依存関係をカプセル化し、異なる環境でも一貫性のある動作を可能にします。 dockerの基本的な使い方について個人的にまとめてみました。

Dockerの考え方

  1. イメージ (Image) Dockerイメージは、アプリケーションやその実行に必要なすべての依存関係、設定、コードなどを含むパッケージです。イメージは不変であり、コンテナのベースとなります。

  2. コンテナ (Container) イメージから生成される実行可能な状態で、プロセスが分離された環境です。コンテナは軽量で、異なる環境でも同じように動作します。

  3. Docker Hub Dockerイメージを保存・共有するためのクラウドベースのレジストリ。公開イメージやプライベートなイメージを保存できます。 自分が使いたい環境を先人の方々が作って公開してくださってたりします。

Linux上でDockerを始める

  1. Dockerのインストール: DockerをLinuxにインストールするには、公式の手順に従います。

    https://docs.docker.com/engine/install/ubuntu/

    ここでは、Ubuntu環境に構築します。

     sudo apt-get update
     sudo apt-get install ca-certificates curl gnupg
     sudo install -m 0755 -d /etc/apt/keyrings
     curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
     sudo chmod a+r /etc/apt/keyrings/docker.gpg
     sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  2. Dockerコマンドの基本

    • docker pull <イメージ名>: Docker Hubからイメージをダウンロードします。
    • docker run <イメージ名>: イメージからコンテナを作成して実行します。
    • docker ps: 現在実行中のコンテナを表示します。
    • docker images: ローカルに保存されているイメージの一覧を表示します。
  3. ex. Nginxコンテナの作成 以下は、NginxをDockerで実行するシンプルな例です。

    docker pull nginx         # Nginxイメージをダウンロード
    docker run -d -p 8080:80 nginx  # ポート8080でNginxコンテナをバックグラウンドで実行

    これで、http://localhost:8080 にアクセスすると、Nginxのデフォルトページが表示されるはずです。

  4. Docker Compose Docker Composeを使用すると、複数のコンテナを定義し、それらを簡単に起動・管理できます。 docker-compose.yml ファイルを作成して、docker-compose up コマンドで一括起動できます。 例えば、APIとデータベースを同時に起動できたりします

注意点:

  • Dockerは権限を持つ操作を行うため、通常は docker グループにユーザを追加して利用します。以下のコマンドで追加できます。

    sudo usermod -aG docker $USER

    ユーザを docker グループに追加したら、一度ログアウトして再ログインしてください。

Dockerの基本コマンド

  1. docker pull - イメージのダウンロード: Docker Hubからイメージをダウンロードします。

    docker pull <イメージ名>

    例えば、Nginxの公式イメージをダウンロードするには:

    docker pull nginx
  2. docker run - コンテナの作成と実行 イメージからコンテナを作成して実行します。

    docker run [オプション] <イメージ名>

    例えば、ポート8080でNginxを実行するには

    docker run -d -p 8080:80 nginx
    • -d: バックグラウンドで実行。
    • -p 8080:80: ホストのポート8080をコンテナのポート80にマッピング。
  3. docker ps - 実行中のコンテナの表示 現在実行中のコンテナを表示します。

    docker ps
  4. *docker images - ローカルのイメージの表示: ローカルに保存されているイメージの一覧を表示します。

    docker images
  5. docker exec - 実行中のコンテナに入る 実行中のコンテナ内でコマンドを実行します。

    docker exec -it <コンテナIDまたはコンテナ名> <コマンド>

    例えば、Nginxコンテナに入るには

    docker exec -it mynginx bash
    • -it: インタラクティブモードで入る。
  6. docker stop - コンテナの停止 実行中のコンテナを停止します。

    docker stop <コンテナIDまたはコンテナ名>

Docker Composeの活用

  1. docker-compose.yml ファイルの作成 プロジェクトのルートディレクトリに docker-compose.yml ファイルを作成します。

    version: '3'
    services:
      web:
        image: nginx
        ports:
          - "8080:80"
  2. docker-compose up - コンテナの一括起動 docker-compose.yml ファイルに基づいて、一括でコンテナを起動します。

    docker-compose up -d
    • -d: バックグラウンドで起動。
  3. docker-compose down - コンテナの停止と削除 起動しているコンテナを停止し、関連するリソースを削除します。

    docker-compose down

終わりに

dockerとdocker-composeを活用することでローカルの環境を汚さずに開発できるだけでなくプロジェクトの他のメンバーのパソコンでも同じ環境をコマンド1つで構築できるようになります!