リモート開発メインのソフトウェア開発企業のエンジニアブログです

Vagrant で Linux での最新の Docker 環境を構築

私は普段、 Docker を使った開発では macOS で Docker Desktop for Mac を使う事が多いのですが、
今回とあるプロジェクトで Linux を使っているメンバーが、 Linux 固有で発生する問題に対処した Pull request を作った経緯で、レビューの際の動作確認の為に表題の環境を作ったので備忘録がてらメモです。(Docker 社は現在 Docker Desktop for Linux を開発していると言う事で、この備忘録を見る頃には同じ方法は使わないかもしれませんが)

ちなみに今回対処した問題と言うのは、ローカル開発環境として、ホストマシンとコンテナ側のファイルの同期時に起きるパーミッションの問題で、それを解決する為に使ったツールは fixuid です。それはまた後日記事にするかもしれません。

尚、今回は Vagrant 2.2.18, VirtualBox 6.1.26 r145957 で検証しました。

Vagrant イメージ準備

今回は適当に ubuntu/focal64 を使いました。以下の 3 つのコマンドを順番に実行します (途中で色々出力されると思います):

vagrant init ubuntu/focal64
vagrant up
vagrant ssh

問題がなければ無事 vagrant に SSH できるかと思います。ここで一旦 OS のバージョン等を見てみます:

vagrant@ubuntu-focal:~$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04.3 LTS
Release:	20.04
Codename:	focal

Docker インストール

Linux が準備できた所で早速 Docker をインストールしてみます。

インストールの手順は公式ドキュメントにあります。 Linux の場合、 distro 毎にマニュアルが分かれているので、今回は Ubuntu の手順に従う事になります。

以下、実行するコマンドを一気に羅列します:

sudo apt-get update

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

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

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

sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io

以上の手順で問題がなければ Docker がインストールされている筈です。バージョンを見てみましょう:

vagrant@ubuntu-focal:~$ docker -v
Docker version 20.10.9, build c2ea9bc

適当なコンテナも実行してみます:

vagrant@ubuntu-focal:~$ sudo docker run docker/whalesay cowsay boo
 _____
< boo >
 -----
    \
     \
      \
                    ##        .
              ## ## ##       ==
           ## ## ## ##      ===
       /""""""""""""""""___/ ===
  ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
       \______ o          __/
        \    \        __/
          \____\______/

問題なさそうです。

尚、この状態ですと 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

これも問題がなければ使える様になります:

vagrant@ubuntu-focal:~$ docker-compose -v
docker-compose version 1.29.2, build 5becea4c

← 前の投稿

Windows 版 Amazon WorkSpaces で Docker を使う

次の投稿 →

Go の interface は構造体の利用側が定義すると言う話

コメントを残す