6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【無料でいいの?】無料化したDocker Hardened Imagesを使ってみる

Posted at

はじめに

Docker Hardened Images(DHI)が無料化されました。

Docker Hardened Imagesの特徴

1. シームレスな移行

DebianやAlpineなど、開発者が慣れ親しんだディストリビューションをベースにしている。
DockerfileのFROM行を1行変更するだけで移行可能。

2. 柔軟なカスタマイズ

高いセキュリティを持つが、カスタマイズ性は損ねていない。

3. 自動パッチ適用と迅速なCVE対応

DockerがCVEを常時監視、24時間以内に脆弱性が修正される。(ヤバい)
詳細は以下参照

利用方法

DHIイメージはdockerhubで公開されています。

使ってみる

以下のHardened ImagesのAlpine Baseを使ってみます。

事前準備

ログイン&イメージプル

$ docker login dhi.io
Username: XXX
Password: 

WARNING! Your credentials are stored unencrypted in '/home/XXX/.docker/config.json'.
Configure a credential helper to remove this warning. See
https://docs.docker.com/go/credential-store/

Login Succeeded
$ 
$ docker pull dhi.io/alpine-base:3.22

3.22: Pulling from alpine-base
c9d0b1ade7b4: Pull complete 
72b3995fb331: Pull complete 
fbf89d45e634: Pull complete 
fb10bbbfa924: Pull complete 
Digest: sha256:8a31a6edf68c75a4a5c7b1491f97b9dd53d7313db1d116065e2776eb6a703751
Status: Downloaded newer image for dhi.io/alpine-base:3.22
dhi.io/alpine-base:3.22
$ 

比較のためalpineも用意してみます。

$ docker login -u XXX

i Info → A Personal Access Token (PAT) can be used instead.
         To create a PAT, visit https://app.docker.com/settings
         
         
Password: 

WARNING! Your credentials are stored unencrypted in '/home/XXX/.docker/config.json'.
Configure a credential helper to remove this warning. See
https://docs.docker.com/go/credential-store/

Login Succeeded
$ 
$ docker pull alpine
Using default tag: latest
latest: Pulling from library/alpine
1074353eec0d: Pull complete 
Digest: sha256:865b95f46d98cf867a156fe4a135ad3fe50d2056aa3f25ed31662dff6da4eb62
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest

alpine linux VS [Docker Hardened Images] Alpine Base

イメージサイズ

イメージサイズを比較してみます。

$ docker image ls | grep alpine
alpine                                                            latest    e7b39c54cdec   8 days ago     8.44MB
dhi.io/alpine-base                                                3.22      7c6862b0dfc7   4 weeks ago    1.74MB

サイズはDHIが圧倒的に小さいようです。
セキュリティ対策のため、最小限の構成をうたっているだけのことはあります。
8.44MB
1.74MB

ユーザ

alpine linux

/ # cat /etc/passwd
root:x:0:0:root:/root:/bin/sh
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/mail:/sbin/nologin
news:x:9:13:news:/usr/lib/news:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucppublic:/sbin/nologin
cron:x:16:16:cron:/var/spool/cron:/sbin/nologin
ftp:x:21:21::/var/lib/ftp:/sbin/nologin
sshd:x:22:22:sshd:/dev/null:/sbin/nologin
games:x:35:35:games:/usr/games:/sbin/nologin
ntp:x:123:123:NTP:/var/empty:/sbin/nologin
guest:x:405:100:guest:/dev/null:/sbin/nologin
nobody:x:65534:65534:nobody:/:/sbin/nologin
/ # 
/ # id
uid=0(root) gid=0(root) groups=0(root),0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video)
/ # 

[Docker Hardened Images] Alpine Base

/ $ cat /etc/passwd
nonroot:x:65532:65532:nonroot:/home/nonroot:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
/ $ 
/ $ id
uid=65532(nonroot) gid=65532(nonroot) groups=65532(nonroot),65532(nonroot)
/ $ 

まさかの2ユーザでした。

ディレクトリ

alpine linux

/ # ls /
bin    etc    lib    mnt    proc   run    srv    tmp    var
dev    home   media  opt    root   sbin   sys    usr
/ # 

[Docker Hardened Images] Alpine Base

/ $ ls /
bin   dev   etc   home  lib   opt   proc  run   sbin  sys   tmp   usr   var
/ $ 

mount,mnt,rootディレクトリがなくなっているようです。

/binディレクトリ

alpine linux

/ # ls /bin
arch           dmesg          hostname       makemime       pipe_progress  stat
ash            dnsdomainname  ionice         mkdir          printenv       stty
base64         dumpkmap       iostat         mknod          ps             su
bbconfig       echo           ipcalc         mktemp         pwd            sync
busybox        egrep          kbd_mode       more           reformime      tar
cat            false          kill           mount          rev            touch
chattr         fatattr        link           mountpoint     rm             true
chgrp          fdflush        linux32        mpstat         rmdir          umount
chmod          fgrep          linux64        mv             run-parts      uname
chown          fsync          ln             netstat        sed            usleep
cp             getopt         login          nice           setpriv        watch
date           grep           ls             pidof          setserial      zcat
dd             gunzip         lsattr         ping           sh
df             gzip           lzop           ping6          sleep
/ # 

[Docker Hardened Images] Alpine Base

/ $ ls /bin
arch           dmesg          hostname       makemime       pipe_progress  stat
ash            dnsdomainname  ionice         mkdir          printenv       stty
base64         dumpkmap       iostat         mknod          ps             su
bbconfig       echo           ipcalc         mktemp         pwd            sync
busybox        egrep          kbd_mode       more           reformime      tar
cat            false          kill           mount          rev            touch
chattr         fatattr        link           mountpoint     rm             true
chgrp          fdflush        linux32        mpstat         rmdir          umount
chmod          fgrep          linux64        mv             run-parts      uname
chown          fsync          ln             netstat        sed            usleep
cp             getopt         login          nice           setpriv        watch
date           grep           ls             pidof          setserial      zcat
dd             gunzip         lsattr         ping           sh
df             gzip           lzop           ping6          sleep
/ $ 

/bin差異なしでした。

デメリット

更新が頻繁なため、意図せずシステムが動かなくなる可能性がある。
「とりあえず動いていればOK」なシステムを止めてしまう可能性がある。

まとめ

無料、高いセキュリティ、軽量という理由から、幅広いシーンで使えるイメージだと思います。

6
1
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
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?