Linux 上で独自の Docker イメージを構築する方法

独自のDockerイメージを構築したいと思ったことはありますか? 結局のところ、「Dockerfile」と呼ばれるものを使用すると、それが可能になります。このガイドでは、独自の Docker イメージを構築する方法について説明します。

Linux に Docker をインストールする方法

新しいイメージを構築する前に、Linux サーバーに Docker をインストールする必要があります。ありがたいことに、docker はさまざまな Linux オペレーティング システムに簡単にインストールできます。このガイドでは、Ubuntu、 Debian、Arch Linux、Fedora、およびOpenSUSEに焦点を当てます。

Docker をインストールするには、ターミナルを開きます。開くと、インストールを開始する準備が整います。使用する Linux オペレーティング システムに応じて、以下に説明するインストール手順に従ってください。

Ubuntu/Debian

まず、Ubuntu/Debian システムのソフトウェア インデックスを更新する必要があります。これを行うには、以下のapt updateコマンドを実行します。

sudo aptアップデート

HTTPS 経由でインストールするには、HTTPS トランスポート パッケージをインストールする必要があります。Curl とその他のいくつかのパッケージもインストールする必要があります。これらのパッケージは、 apt installコマンドを使用してインストールできます。

sudo apt install apt-transport-https ca-certificatescurl software-properties-common

パッケージがインストールされたら、Ubuntu/Debian システムで Docker GPG キーを有効にします。このキーにより、Ubuntu にパッケージを安全にインストールできることが保証されます。

カール -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

GPG キーを有効にしたら、Docker リポジトリを有効にします。これを行うには、ターミナルで次のechoコマンドを実行します。

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) 安定版" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Docker リポジトリを有効にしたら、apt updateコマンドを再実行してソフトウェア インデックスを更新します。

sudo aptアップデート

最後に、必要な Docker パッケージを Ubuntu または Debian にインストールできます。

sudo apt install docker-ce docker-ce-clicontainerd.io

Arch Linux

Arch Linux を使用している場合は、pacman -Sコマンドを実行して「docker」パッケージをインストールするだけで、システム上で Docker を動作させることができます。

sudo pacman -S ドッカー

Docker パッケージが Arch システムにインストールされている状態で、次のsystemctlコマンドを実行してソフトウェアを有効にします。

sudo systemctl docker を有効にする sudo systemctl docker を開始する

フェドーラ

Fedora 上で Docker を動作させるのは非常に簡単です。まず、dnf installコマンドを使用してシステムにソフトウェアをインストールします。

sudo dnf インストールドッカー

パッケージが Fedora システムにインストールされたら、systemd で有効にします。

sudo systemctl docker を有効にする sudo systemctl docker を開始する

OpenSUSE

Docker を OpenSUSE 上で動作させるには、Docker リポジトリを追加する必要があります。

sudo zypper addrepo https://download.docker.com/linux/opensuse/$(awk -F= '/^VERSION_ID/{print $2}' /etc/os-release)/x86_64/stable docker

次に、Zypper を更新してソフトウェアをインストールします。

sudo ジッパーのリフレッシュ

sudo zypper インストール docker-ce

最後に、systemd を使用してシステム上で Docker を有効にします。

sudo systemctl docker を有効にする sudo systemctl docker を開始する

ベース画像の選択方法

DockerHub から取得したすべての Docker イメージは、基本イメージを使用して構築されます。したがって、Docker コンテナーの基本イメージを選択する必要があります。このガイドでは、最も互換性のある Linux OS の 1 つである Ubuntu を使用します。

このガイドでは、Ubuntu 22.04 で Drupal 10 イメージを構築する方法の例を示します。ただし、これらのビルド手順は、Web アプリから Python プログラムなど、作成したいあらゆるものに適用できます。

まず、ターミナルで Nano テキスト エディターを開きます。Nano を使用して独自の Dockerfile を作成します。

nano -w ~/dockerfile

Nano テキスト エディター内に次のコードを入力して、Ubuntu を使用することを指定します。Ubuntu 22.04 を入手するには、それを指定します。別のリリースの Ubuntu を使用する場合は、ここで情報を参照してください。

# Use the official Ubuntu base image
FROM ubuntu:22.04

作業ディレクトリの設定方法

Docker コンテナ内に作業ディレクトリを設定する必要があります。作業ディレクトリは、アプリケーションがコンテナ内の Ubuntu にデプロイされる場所です。この例では、Drupal 10 を使用します。Drupal は Web アプリケーションであるため、 WORKDIR を/var/www/html/ として設定する必要があります。

Nano テキスト エディターで、Enterキーを押してスペースを作成します。次に、次のコードを貼り付けます。

# Set the working directory in the container WORKDIR /var/www/html

プログラムの依存関係をインストールする方法

Docker イメージにデプロイするアプリケーションは、その依存関係が満たされている必要があります。正しい依存関係がイメージにインストールされていない場合、イメージは機能しません。Ubuntu 22.04 に基づいて Drupal 10 イメージを作成しているため、すべての Drupal 10 の依存関係をファイルに追加する必要があります。

Nano テキスト エディターで、Enterキーを押してスペースを作成します。次に、次のコードを貼り付けます。

# Install dependencies RUN apt-get update && apt-get install -y \ apache2 \ php \ libapache2-mod-php \ php-curl \ php-gd \ php-intl \ php-mbstring \ php-mysql \ php-pgsql \ php-xml \ php-zip \ unzip

プログラムコードのコピー方法

プロセスの次のステップは、Docker ファイルにプログラム コードを提供することです。もう一度、例として Drupal 10 を使用します。したがって、Drupal 10 をダウンロードして抽出する手段を Dockerfile に提供する必要があります。

Nano テキスト エディターでEnterキーを押して新しい行を作成します。次に、次のコードを追加して、Dockerfile が Drupal 10 をダウンロードできるようにします。

# Download and install Drupal RUN wget https://ftp.drupal.org/files/projects/drupal-10.2.tar.gz && \ tar -xvf drupal-10.2.tar.gz && \ mv drupal-10.2 .

ポートを公開する方法

Docker コンテナをデプロイするたびに、ポートにアクセスします。たとえば、デフォルトの Syncthing コンテナを実行すると、ポート 8384 が公開されます。ポート 8080 および 80。コンテナが正しく動作するには、正しいポートを公開する必要があります。

まず、展開しているプログラムがどのポートにアクセスする必要があるかを調べます。この例では、Drupal 10 をデプロイしています。Drupal 10 は Web サーバー用の CMS システムであるため、ポート 80 が必要です。そのため、Nano テキスト ファイルではポート 80 を公開します。

# Expose the Drupal port EXPOSE 80

デフォルトコマンドの設定方法

イメージが構築およびデプロイされるときに、自動的にプログラムの実行が開始されるように、Dockerfile にデフォルトのコマンドを設定する必要があります。この例では、コンテナーがデプロイされるとすぐに Drupal 10 が起動するようにしたいため、Dockerfile に起動コマンドを追加する必要があります。

Nano テキスト エディターでEnter キーを押して、ファイル内に新しいスペースを作成します。次に、次のコードを貼り付けます。

# Start Apache in the foreground CMD ["apache2ctl", "-D", "FOREGROUND"]

この最後のコードをファイルに追加したら、Ctrl + Oを押して保存し、 Ctrl + Xで Nano テキスト エディターを終了します。Dockerfile は以下のコードのようになります。

注: これは Dockerfile の例です。Drupal の例を参照として使用して、必要なアプリケーション用に独自の例を作成できます。

FROM ubuntu:22.04

# Set the working directory
WORKDIR /var/www/html

# Install dependencies
RUN apt-get update && apt-get install -y \
apache2 \
php \
libapache2-mod-php \
php-curl \
php-gd \
php-intl \
php-mbstring \
php-mysql \
php-pgsql \
php-xml \
php-zip \
unzip


# Download and install Drupal
RUN wget https://ftp.drupal.org/files/projects/drupal-10.2.tar.gz && \
tar -xvf drupal-10.2.tar.gz && \
mv drupal-10.2 .


# Expose the Drupal port
EXPOSE 80

# Start Apache in the foreground
CMD ["apache2ctl", "-D", "FOREGROUND"]

イメージの構築方法

作成した Dockerfile を使用して新しい Docker イメージをビルドするには、次のdocker buildコマンドを入力します。

sudo docker build -t my-docker-image 。

上記のコマンドは Docker イメージをビルドします。

イメージの展開方法

新しいイメージをコンテナーにデプロイするには、docker runコマンドを使用する必要があります。たとえば、新しく構築された Drupal 10 Ubuntu イメージをポート 80 で実行するには、次の手順を実行します。

sudo docker run -d --name my-drupal-container -p 80:80 my-docker-image


UbuntuサーバーにGitLabをインストールする方法

UbuntuサーバーにGitLabをインストールする方法

GitLab を Ubuntu サーバー上で動作させたいと考えていますか? GitLab は、GitHub のようなサービスに代わる、強力な自己ホスト可能な代替サービスです。これを使用すると、次のことができます

SELinux による Ubuntu Linux サーバーの保護

SELinux による Ubuntu Linux サーバーの保護

SELinux をインストールしてアクティブ化することで、Ubuntu Linux サーバーにセキュリティを追加する方法を学びます。

Cockpit を使用して Linux サーバー上で NFS を構成する

Cockpit を使用して Linux サーバー上で NFS を構成する

Linux サーバーに NFS 共有をマウントする簡単な方法が必要ですか? Cockpit アプリを使用して NFS 共有をマウントする方法を学びます。

Ubuntu 22.04 LTS にアップグレードする方法

Ubuntu 22.04 LTS にアップグレードする方法

Ubuntu 22.04 の長期サポートが登場しました! デスクトップまたはラップトップを最新の Ubuntu リリースにアップグレードする方法を学びます。

最新の Nvidia GPU ドライバーを Linux にインストールする方法

最新の Nvidia GPU ドライバーを Linux にインストールする方法

最新の Nvidia GPU ドライバーを Linux にインストールする方法

Dockerコンテナにファイルを転送する方法

Dockerコンテナにファイルを転送する方法

ファイルを Docker コンテナに転送する必要がありますか? Docker cp ツールを使用すると、コンテナーとの間でファイルを簡単に移動できます。

Linux に DEB ファイルをインストールする方法

Linux に DEB ファイルをインストールする方法

.DEB ファイルとは何ですか? それを使って何をしますか?Linux PC に DEB ファイルをインストールするさまざまな方法を学びましょう。

GOG Galaxy を Linux 上で動作させる方法

GOG Galaxy を Linux 上で動作させる方法

GOG.com のゲームを所有していますか? ビデオ ゲームを楽しむために Linux PC に GOG Galaxy クライアントをセットアップしたいですか? このガイドに従ってください。

CentOS に Docker エンジンをインストールする方法

CentOS に Docker エンジンをインストールする方法

Docker Engine は、Linux およびその他のプラットフォーム用のオープン コンテナ化プログラムです。Docker Engine は、次のように動作する自己完結型コンテナを管理します。

Ferdi とすべてのチャットを 1 つにまとめる方法

Ferdi とすべてのチャットを 1 つにまとめる方法

Slack、Discord、その他多くの生産性向上ツールを Linux システムにインストールすることにうんざりしていませんか? それらをすべて 1 つに結合できたらいいのにと思いますか