金子邦彦研究室インストールUbuntu, WSL2Docker Engine,Docker Desktop のインストールと使用法,Docker Compose の「はじめよう」を実行(Ubuntu 22.04 上)

Docker Engine,Docker Desktop のインストールと使用法,Docker Compose の「はじめよう」を実行(Ubuntu 22.04 上)

◆ この Web ページで行うこと.

Docker Engine,Docker Desktop のインストールと使用法,Docker Compose の「はじめよう」を実行(Ubuntu 22.04 上)を説明する.

公式のドキュメントの手順によりインストールを行う

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

用語説明

目次

  1. 前準備
  2. Docker Engine, Docker Desktop のインストール(Ubuntu 22.04 上)
  3. Docker 上でサーバを起動.ポートマッピングを行う
  4. Docker の操作の基本
  5. Dockerfile を使い,イメージファイルを生成

関連する外部ページ

前準備

Ubuntu のシステム更新

UbuntuUbuntu で OS のシステム更新を行うときは, 次のコマンドを実行.

UbuntuUbuntu のインストールは別ページ »で説明

sudo apt -y update
sudo apt -yV upgrade
sudo /sbin/shutdown -r now

curl のインストール

端末で,次のコマンドを実行する.

sudo apt -y install curl

Docker Engine, Docker Desktop のインストール(Ubuntu 22.04 上)

公式のドキュメントの手順によりインストールを行う

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

  1. 旧バージョンの削除
    sudo apt remove docker docker-engine docker.io containerd runc docker-ce docker-ce-cli
    
  2. 旧バージョンのクリーンアップ
    rm -r $HOME/.docker/desktop
    sudo rm -f /usr/local/bin/com.docker.cli
    sudo apt purge docker-desktop
    
  3. gnome-terminal のインストール
    sudo apt install gnome-terminal
    
  4. apt が HTTPS でレポジトリを利用できるようにする設定
    sudo apt update
    sudo apt -y install ca-certificates curl gnupg lsb-release
    
  5. Docker の公式の GPG キーを追加
    sudo mkdir -p /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    
  6. レポジトリのセットアップ
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
    
  7. Docker Engine のインストール
    sudo apt update
    sudo apt -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin
    
  8. Docker Engine がインストールできたことの確認

    エラーメッセージが出ないことを確認.

    sudo docker run hello-world
    

    [image]
  9. 権限の設定
    sudo usermod -aG docker $USER
    
  10. 自動起動の設定
    sudo systemctl unmask docker.service
    sudo systemctl enable docker
    sudo systemctl is-enabled docker
    

    [image]
  11. Docker Desktop の DEB パッケージのダウンロード

    Ubuntu でのインストールのページ(公式): https://docs.docker.com/desktop/install/ubuntu/ を開き, 「Install Docker Desktop」の下にある 「Download DEB package」をクリック

    [image]
  12. ダウンロードした DEB パッケージのインストール
    sudo apt -y install ./docker-desktop-*.deb
    
  13. 確認のため,Docker Desktop を起動し,情報を表示してみる.
    systemctl --user start docker-desktop
    docker compose version
    docker --version
    docker version
    

    [image]
  14. 自動起動の設定
    systemctl --user enable docker-desktop
    

[image]

Docker 上でサーバを起動.ポートマッピングを行う

  1. 前準備
    sudo apt -y update
    sudo apt -y install gufw
    
  2. サーバの起動

    公式の「はじめよう」のページ https://docs.docker.com/get-started/ により,サーバを起動してみる.

    次の操作では,ポート 3000 をポート 80 にマッピングしている.

    sudo ufw allow 3000
    docker run -d -p 3000:80 docker/getting-started
    
  3. SSH でリモート接続

    次の操作では,ポート 8022 をポート 22 にマッピングしている.

    sudo ufw allow 8022
    docker run -p 8022:22 -it myubuntu:base3 /bin/bash 
    sudo adduser --uid 1234 --ingroup sudo --home /home/ai ai
    

Docker の操作の基本

コンテナとイメージの作成

  1. コンテナとイメージの作成

    ubuntu」のところは,「ubuntu:22.04」のようにバージョン指定することもできる.

    docker run -it --name myubuntu ubuntu /bin/bash 
    exit
    

    [image]
  2. コンテナとイメージの確認
    docker ps -a 
    docker images
    

    [image]
  3. すでに生成済みのコンテナでコマンドを実行

    まず「docker start ...」で,Docker コンテナを実行状態とし, まず「docker exec ...」でコマンドを実行している.

    docker start myubuntu
    docker exec -it myubuntu /bin/bash
    apt update
    apt -y upgrade
    apt -y install sudo 
    sudo apt -y install -y tzdata
    sudo apt -y install -y wget cmake git p7zip-full
    exit
    

    [image]

コンテナからイメージを作成

  1. docker commit により,コンテナからイメージを作成

    コンテナIDを指定する必要がある.コンテナIDは,「docker ps -a」で調べておく. 下の実行例では,イメージ名として「myubuntu:base」を指定している. 「myubuntu:base」は,自分の使いたいイメージ名を指定すること.

    docker ps -a
    docker commit <コンテナID> myubuntu:base
    

    [image]
  2. イメージが増えたことを確認
    docker ps -a 
    docker images
    

    [image]
  3. 確認のため,いま作成したイメージを使い,コンテナを作成してみる
    docker run -it myubuntu:base /bin/bash 
    exit
    

    [image]

Dockerfile を使い,イメージファイルを生成

  1. 空のディレクトリを作る
  2. そのディレクトリの中に,Dockerfile を次のように作成
    FROM ubuntu:22.04
    ENV DEBIAN_FRONTEND=noninteractive
    RUN apt update
    RUN apt -y upgrade
    RUN apt -y install sudo 
    RUN sudo apt -y install tzdata
    RUN sudo apt -y install curl cmake git p7zip-full
    RUN wget https://www.kkaneko.jp/tools/ubuntu/ubuntudo.sh
    RUN touch /tmp/UBUNTU
    RUN /bin/bash ubuntudonew.sh
    

    [image]
  3. イメージの作成
    docker build -t myubuntu:base .
    

    [image]
  4. 確認のため,いま作成したイメージを使い,コンテナを作成してみる
    docker run -it myubuntu:base /bin/bash 
    exit
    
  5. docker commit により,コンテナからイメージを作成

    コンテナIDを指定する必要がある.コンテナIDは,「docker ps -a」で調べておく. 下の実行例では,イメージ名として「myubuntu:base2」を指定している. 「myubuntu:base2」は,自分の使いたいイメージ名を指定すること.

    docker ps -a
    docker commit <コンテナID> myubuntu:base2
    
  6. イメージが増えたことを確認
    docker ps -a 
    docker images
    
  7. 確認のため,いま作成したイメージを使い,コンテナを作成してみる
    docker run -it myubuntu:base2 /bin/bash 
    exit
    

Docker Compose の「はじめよう」を実行(Ubuntu 上)

次の Docker Compose の「はじめよう」のページの記載通りに実行を進める.

https://docs.docker.com/compose/gettingstarted/

  1. 前準備

    Docker Compose のインストールが終わっていること. ここでは,Docker Decktop に同封の Docker Compose を使用している.

  2. プロジェクトのディレクトリの作成
    mkdir composetest
    cd composetest
    

    [image]
  3. プロジェクトのディレクトリに app.py を作る.

    https://docs.docker.com/compose/gettingstarted/ の app.py を使用.

    [image]
  4. プロジェクトのディレクトリに requirements.txt を作る.

    https://docs.docker.com/compose/gettingstarted/ の requirements.txt を使用.

    [image]
  5. プロジェクトのディレクトリに Dockerfile を作る.

    Docker イメージファイルの生成のために使用される. app.py が使用するソフトウエア(Python 処理系など)が設定されている.

    https://docs.docker.com/compose/gettingstarted/ の Dockerfile を使用.

    [image]
  6. プロジェクトのディレクトリに docker-compose.yml を作る.

    サービスの設定を行っている.

    https://docs.docker.com/compose/gettingstarted/ の docker-compose.yml を使用.

    [image]
  7. 「docker compose up」を実行することにより,アプリケーションのビルドと実行を行う.

    エラーメッセージが出ていないことを確認.

    docker compose up
    

    [image]
  8. ポート番号 8000 で,Webサーバにアクセスし,結果を見る.
    curl http://localhost:8000
    

    [image]