手当たり次第に書くんだ

飽きっぽいのは本能

Docker コンテナを自作する #1 ベースイメージ

目次に戻る

概要

現在は多くのDockerイメージがDocker Hubで公開されており、それらを利用すればコンテナ自体を自作する必要はありませんが、企業向けのシステムではカスタマイズしたオリジナルのコンテナイメージを使用したいケースが多いと思います。

コンテナから作成することを面倒に思うかもしれませんが、コンテナを立ち上げる際にどのように固有パラメータを適用するかはコンテナの開発者が自由に作成しており、カスタマイズ性に欠けることもあります。コンテナを自作すると自分の要件に応じた最低限の設定で済むため運用管理もしやすくなると思います。

本稿では各コンテナイメージのベースとなるコンテナイメージをUbuntuで作成します。尚、ここので自作とはミドルウェアを含まないクリアなOSのオフィシャルイメージをカスタマイズすることを指しています。

Dockerfile

下記のDockerfileを用意します。このDockerfileで実施していることはタイムゾーンの設定だけです。apt-getコマンドの見慣れないオプションはInteractiveを抑止するものです。

FROM ubuntu:22.04
RUN apt-get update
RUN DEBIAN_FRONTEND=noninteractive apt-get -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold -y upgrade
RUN DEBIAN_FRONTEND=noninteractive apt-get -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold -y install tzdata
RUN ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
RUN echo "Asia/Tokyo" > /etc/timezone

イメージの作成

build

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

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

run

作成したコンテナイメージが起動できることを確認します。--rmオプションを付与しているためexitするとコンテナも削除されます(コンテナイメージは残ります)。

myadmin@ubuntu:~$ docker run --rm -it harbor.si1230.com/ubuntu-22.04/base:1.0.0
root@6bd96dd87827:/# cat /etc/timezone
Asia/Tokyo
root@6bd96dd87827:/# exit

push

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

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

目次に戻る

Docker コンテナを自作する #1 ベースイメージ

コメントを残す

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

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

トップへ戻る