イントロダクション
ラズパイにRedmineをインストールして使用しようと考えております。
しかし、記事を検索しながら、いろいろとやってみると、どれもこれもエラーがでて使えない。。。結局Dockerをちゃんと学習することにしました。
参考サイト
DockerDocsを参考にします。
タイトルは「Raspberry Pi OS (32 ビット) に Docker エンジンをインストールする」です。
Dockerとは?
いろいろと記事を斜め読みしてみると下のようなものということです。
Dockerはコンテナ仮想化を用いたOSレベルの仮想化によりアプリケーションを開発・実行環境から隔離し、アプリケーションの素早い提供を可能にする。
色々な説明があるけど、結局はこういうことだと思う。
つまり、「コンテナ」にまとめたアプリケーションを仮想マシンを使用して実行できる。ということらしい
Docker事始め
次のコマンドで、不要なもの、古いDockerをアンインストールします。もしかしたらインストールしているかもしれないからです。
よくあるのが、デフォルトインストールしているかもしれません。。。
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
DockerのAPTリポジトリセットアップ
コードを書くと下のようになります。
# Add Docker's official GPG key:
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/raspbian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Set up Docker's APT repository:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/raspbian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
ラズパイを更新
下のコマンドで、ラズパイの更新します。
sudo apt-get update
コマンドのインストール
下のコマンドをインストールします。既にインストールしているときは「すでに最新バージョン」
- ca-certificates
- gnupg
- curl
sudo apt-get install ca-certificates curl gnupg
Dockeraptリポジトリをセットアップ準備
GPGコマンドで暗号化・復号を行えるようにする?
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/raspbian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
Dockeraptリポジトリをセットアップ
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/raspbian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
最後に更新
sudo apt-get update
Dockerパッケージインストール
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
インストールできたら、起動確認「ハローワールド」を実行する
sudo service docker start
sudo docker run hello-world
Dockerコマンドを使う
Dockerをコマンドで扱うときの基本構文は下のようになっています。※こちらのページ参照
docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
DocerFileを使う
こちらのページを参照しています。※英語だったので翻訳してみました。
下のようなコマンドがあるのでそれを使用するということらしい。。。
Dockerのコマンド入力の基本としてコマンド名は大文字、引数は小文字で書くようです。
docker ADD argument...
コマンド名 | 意味 |
---|---|
ADD | ホスト上のソースから、設定された宛先にあるコンテナー独自のファイルシステムにファイルをコピーします。 |
CMD | コンテナー内で特定のコマンドを実行するために使用できます。 |
ENTRYPOINT は、イメージを使用してコンテナーが作成されるたびに使用されるデフォルトのアプリケーションを設定します。 | |
ENV | 環境変数を設定します。 |
EXPOSE | 特定のポートを関連付けて、コンテナと外部の間のネットワークを可能にします。 |
FROM | ビルド プロセスの開始に使用されるベース イメージを定義します。 |
MAINTAINER | イメージ作成者のフルネームと電子メール アドレスを定義します。 |
RUN | Dockerfile の中心的な実行ディレクティブです。 |
USER | コンテナを実行する UID (またはユーザー名) を設定します。 |
VOLUME | コンテナからホスト マシン上のディレクトリへのアクセスを可能にするために使用されます。 |
WORKDIR | CMD で定義されたコマンドが実行されるパスを設定します。 |
LABEL | Docker イメージにラベルを追加できます。 |
試しにコマンドを実行する
下のようにディレクトリを作成します。作成先は初期ディレクトリ(ユーザーのディレクトリ)から「dockerbuild」というディレクトリを作成しました。
mkdir ~/dockerbuild
Dockerfileを作成します。
nano Dockerfile
下の内容をコピペします。
FROM ubuntu:latest
MAINTAINER NAME EMAIL
RUN apt-get -y update
RUN apt-get -y upgrade
RUN apt-get install -y build-essential
Where NAME is your full name and EMAIL is your email address.
そして、以下のようにコマンドをたたきます。
docker build -t "NAME:Dockerfile" .
エラーがあるけど、イメージ作製はできているようです。
「NAME」には好きな名前を入れてよいです。最後の「.」を忘れないようにしましょう。
これができたら下のようなコマンドをたたきます。
docker images
使用できるイメージの一覧が表示されます。