概要
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