手当たり次第に書くんだ

飽きっぽいのは本能

Docker コンテナを自作する #2 MariaDB

目次に戻る

概要

MariaDBのコンテナイメージを作成します。

Dockerfile

下記のDockerfileを用意します。

このDockerfileではmysqlグループとユーザーを事前に作成しています。この理由は初期インストール時に含まれる以外のユーザーはgid/uidが不定となるためで、例えばKubernetesで/var/lib/mysqlをマウントしてMariaDBを起動する場合、ボリュームのgid/uidが異なるとエラーになりますが、固定値にすることで管理が楽になります。

useraddで指定しているコメントやシェルなどは別のホストでインストールしたMariaDBの情報と同じものと設定しています。

FROM harbor.si1230.com/ubuntu-22.04/base:1.0.0
RUN apt-get update
RUN DEBIAN_FRONTEND=noninteractive apt-get -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold -y upgrade
RUN groupadd mysql -g 10000
RUN useradd mysql -u 10000 -g 10000 -c "MySQL Server" -d /nonexistent -s /bin/false
RUN DEBIAN_FRONTEND=noninteractive apt-get -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold -y install mariadb-server
ENTRYPOINT ["mysqld_safe"]

イメージの作成

build

Dockerfileからイメージをビルドします。本稿でのTagはHarbor(プライベートレジストリ)で管理する前提としています。

myadmin@ubuntu:~$ docker build -t harbor.si1230.com/ubuntu-22.04/mariadb/mariadb:1.0.0 .

run

作成したコンテナイメージが起動できることを確認します。

本稿ではmariadbボリュームをコンテナの/var/lib/mysqlにマウントしています。ボリュームは事前作成してなくとも存在しなければ作成され、空であればコンテナ側のデータが書き込まれます(バインドマウントではこの動作になりません)。

myadmin@ubuntu:~$ docker run -d --name mariadb -v mariadb:/var/lib/mysql harbor.si1230.com/ubuntu-22.04/mariadb/mariadb:1.0.0

push

問題なければHarborにPushします。Pushは設定したTagでアップロード先を決定しています。

myadmin@ubuntu:~$ docker push harbor.si1230.com/ubuntu-22.04/mariadb/mariadb:1.0.0

目次に戻る

Docker コンテナを自作する #2 MariaDB

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る