88
105

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

今使ってるLinuxをDockerイメージ化する

Last updated at Posted at 2022-01-15

はじめに

Dockerfileで宣言するFROM centos:7などのベースイメージは公式で配布するもの使用するのが一般的ですが、こういったベースイメージは実は自前の物を使う事もできます1。今回は自分が使用しているシステムをそのままDockerイメージ化する方法をまとめて置きます。

Dockerイメージの作り方

Linuxでベースイメージを作るにはそのままで稼働できるファイルの群れ、すなわちルートファイルシステム2が必要です。今回は使用中のLinuxシステムをそのままイメージ化することが目的なのでシステム自体を圧縮してファイル化します。

1. 全体のシステムをコピーする

rsyncを使ってシステムのスナップショットを作ります。その時、/dev, /proc/, /sys/, /run, /mntは現在のマシーンに依存するディレクトリーなので除外します。
下記の例では/mnt/copyにシステムをコピーします。

rsync -avz /* /mnt/copy/ --exclude '/dev' --exclude '/proc' --exclude '/sys' --exclude '/run' --exclude '/mnt'

2. 除外したディレクトリーを生成する

除外したディレクトリーもまたシステムに必要なものなので空のディレクトリーを生成します。

mkdir /mnt/copy/sys /mnt/copy/dev /mnt/copy/proc /mnt/copy/run /mnt/copy/mnt

3. tar.gzに圧縮する

軽量化のためにtar.gzを使います。また、この時、ルートが/になるようにすることが重要です。今回は /mntの中で-Cオプションを使いました。

cd /mnt
tar -czvf my-linux.tar.gz -C copy  .

4. Tarballを使ってイメージを作る

Tarballをそのままimportする方法3とDockerfile1を使う方法があります。

Tarballをそのまま取り入れる

docker import my-linux.tar.gz

Dockerfileでイメージをビルドする

Dockerfile
FROM scratch
ADD my-linux.tar.gz /
CMD ["/bin/bash"]
docker build --tag my-linux:lastet .
  1. Create a base image, https://docs.docker.com/develop/develop-images/baseimages/ 2

  2. root ファイルシステム, https://www.ibm.com/docs/ja/aix/7.2?topic=tree-root-file-system

  3. docker import, https://docs.docker.com/engine/reference/commandline/import/

88
105
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
88
105

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?