0
0

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 3 years have passed since last update.

docker on debian on VirtualBox

Last updated at Posted at 2021-09-06

はじめに

Docker Desktopが有料化されるということを受けて、今般、改めてVirtualBoxにて環境を作ることにした。

したらば「Linuxにdocker入れました〜」って情報はたくさん出てくるんだけど、その前のOSを準備するところからの流れはなかなか見当たらなかったので、とりあえずメモに残すことにしてみた。

なお、本件に登場するソフトウェアなどのバージョンは以下の通り(2021/09/06時点)。

  • macOS BigSur(11.5.2)
  • VirtualBox:6.1.26
  • debian 11.0.0
  • docker 20.10.8
  • docker-compose 1.29.2

debian on VirtualBox

LinuxのディストリビューションというとUbuntuが人気だけど、より安定性を重視しているということでdebianを選んでみた。今回、GUIを使うつもりはないので、ネットワークインストール版のISOを入手し、dockerを動かすのに必要最低限のもののみ導入する。

VirtualBoxで立てるVMにはNICを2つ(NATとホストオンリーアダプタ)を実装するのが良いらしいので、それに従うことにする。NATはゲスト→インターネット、ホストオンリーアダプタはホスト~ゲスト間の接続を担う一方、インターネットからゲストへのアクセスはできなくなるので、セキュリティ上良いということらしい(これはdebianに限った話ではない)。

(1) netinstバージョンのisoをダウンロードする(300MBぐらいだった)
(2) VirtualBoxの仮想OSをセットアップする。仮想OSにはネットワークはデフォルトのNATと、もう1つホストオンリーアダプターを追加する。ホストオンリーアダプタのDHCPは無効にする。
(3) ダウンロードしたISOをセットしてVMを起動
(4) インストーラが立ち上がったら、install(上から2番目)を選択
(5) ネットワークのところでは2つのNICが表示される(enp0s3とenp0s8、前者がNAT、後者がホストオンリーアダプタ)。プライマリネットワークはenp0s3を選ぶ。
(6) 導入するパッケージでは、デスクトップ環境を外して、sshサーバと標準システムツールにチェックを入れる

debianの準備

dockerを導入する前に、ちょこっとだけ準備が必要。

文字化け対応

日本語でインストールをすると、CUIは文字化けする場合があるようなので(実際文字化けした)、以下の対応をした。

(1) rootでログイン
(2) vi /etc/bash.bashrcし、以下の行を最後に追加する

/etc/bash.bashrc
:
case $TERM in
    linux) LANG=C ;;
    *) LANG=ja_JP.UTF-8 ;;
esac

ホストオンリーアダプタ側のインターフェースを有効にする

enp0s3はアクティブだが、もう1つのenp0s8がDOWNしている上にIPアドレスの設定をしていないので、以下の設定ファイルを編集して反映する

(1) /etc/network/interfaceに以下を追記する

:
(固定IPを設定)
auto enp0s8
iface enp0s8 inet static
address 192.168.56.11 <--- ホストオンリーアダプタのIP帯域(192.168.56.xxx)に合わせる
netmask 255.255.255.0
# gateway 192.168.56.1 <--- GWはenp0s3側になるので、こちらには設定しない

(参考:DHCPの場合はこうなる)
allow-hotplug enp0s8
iface enp0s8 inet dhcp

(2) OSリブート か systemctlでrestartをする
(3) リブート後、ip addrでenp0s8にIPが振られていることを確認
(4) ターミナルでゲストOSからインターネットへ、及びホストOSに対しpingを打ち、どちらも応答が帰ってくることを確認する
(5) ホストOSからゲストOSにsshでログインできることも確認する

root@debian-vm:~# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:73:74:12 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3
       valid_lft 84786sec preferred_lft 84786sec
    inet6 fe80::a00:27ff:fe73:7412/64 scope link 
       valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:29:0f:1a brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.11/24 brd 192.168.56.255 scope global enp0s8
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe29:f1a/64 scope link 
       valid_lft forever preferred_lft forever
root@debian-vm:~# 

sudo

(1) rootでログイン
(2) apt-get install sudo
(3) visudo を実行するとエディタが開く
(4) 最終行にsudoを許容するユーザ(hogehoge)の情報を追加して、C-xで保存する。本当なら実行を許容するコマンドを絞り込んだりするのだろうが、ひとまずオールOKで進める。

hogehoge ALL=(ALL:ALL) ALL   #全コマンドを許容する場合

(5) rootはログオフし、sudoを許容設定したユーザでログインする
(6) sudo xxxを実行してエラーにならなければOK

docker導入前のリソース使用量

ここまでの作業でHDD、メモリの使用量を見たらこんなだった。dockerを動かしたら、どのくらい消費するのだろうか?

root@debian-vm:~# df -k
ファイルシス   1K-ブロック    使用   使用可 使用% マウント位置
udev               1513560       0  1513560    0% /dev
tmpfs               305968     524   305444    1% /run
/dev/sda1         50303512 1175092 46540672    3% /
tmpfs              1529840       0  1529840    0% /dev/shm
tmpfs                 5120       0     5120    0% /run/lock
tmpfs               305968       0   305968    0% /run/user/1000
root@debian-vm:~# free -m
               total        used        free      shared  buff/cache   available
Mem:            2987          75        2674           0         237        2771
Swap:            974           0         974
root@debian-vm:~#

docker導入

debianにdockerを導入する。

dockerをインストールする

公式の手順に沿って進めればいいので、難しいことはない。

(1) dockerに必要なアプリ、ライブラリを導入

$ sudo apt-get update
$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

(2) GPGキーを作成

$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

(3) aptのリストにdockerを追加

$ echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

(4) aptでdockerをインストール・確認

$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
:
:
$ docker --version
Docker version 20.10.8, build 3967b7d
$

(5) OSリブート後にdockerが起動していなかったら、以下のコマンドを実行する

$ sudo systemctl enabled docker
$ sudo systemctl restart docker

docker-composeをインストールする

こちらも公式の手順に沿って進めればよいので、難しくない

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ which docker-compose
/usr/local/bin/docker-compose
$ docker-compose --version
docker-compose version 1.29.2, build 5becea4c
$

docker導入後のリソース使用量

docker、docker-composeをインストールし、dockerが起動している状態でのリソース使用量はこんな感じ。環境によって色々だと思うので参考まで。

root@debian-vm:~# df -k
ファイルシス   1K-ブロック    使用   使用可 使用% マウント位置
udev               1513560       0  1513560    0% /dev
tmpfs               305968     540   305428    1% /run
/dev/sda1         50303512 1755992 45959772    4% /
tmpfs              1529840       0  1529840    0% /dev/shm
tmpfs                 5120       0     5120    0% /run/lock
tmpfs               305968       0   305968    0% /run/user/1000
root@debian-vm:~# free -m
               total        used        free      shared  buff/cache   available
Mem:            2987         144        2586           0         257        2705
Swap:            974           0         974
root@debian-vm:~# 

終わりに

rootlessとかまだやるべきことはありそうだが、実験用だし、ひとまずpullしてrunできるようになったのでここでひと区切り。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?