LoginSignup
0
0

More than 1 year has passed since last update.

Ubuntu上にDocker環境を構築

Posted at

はじめに

2013年にDockerが誕生してから10年経ち、使い古いされてきた。
もっと言うと、コンテナ環境=Kubernetesと言われるくらいオーケストレーションツールが普及している。
コンテナエンジンとしては、Docker以外にもPodmanといった新種も出ている。

そんな中でDocker環境の構築を記すのは、私がより実践的なコンテナ開発・運用方法を習得する必要が出てきたからです。
規模の大きいシステムをコンテナ環境で運用することを検討(画策)している。

そんな状況で、技術評論社社から出版されている山田明憲氏著「Docker/Kubernetes 実践開発入門」に取り組むことに!

書籍にはLinux環境での構築はオプション的になっていて記述が少なかったので、やったことのメモも兼ねて当記事にまとめておく。
Linux環境でもDocker Desktopが使えるようになっているが、今回はあえてDocker EngineをインストールするCLI環境を構築した。
CLI環境にした理由は、この先の拡張性があるかなという程度です。

環境

項目
OS Linux
ディストリビューション Ubuntu 22.04.02 LTS
Docker Engine 23.0.4
Docker Compose 2.17.2

Dockerインストール方法

基本的には公式サイトが丁寧に解説してくれているので、従ってインストールする。

1.aptの参照リポジトリにDockerを登録

Dockerリポジトリを登録
$ sudo apt-get update
$ sudo apt-get install \
    ca-certificates \
    curl \
    gnupg

2.DockerのGPGキーを登録

GPGキー登録
$ sudo install -m 0755 -d /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

3.リポジトリのセットアップ

リポジトリのセットアップ
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

4.Docker Engine、containerd、Docker Composeをインストール

Dockerインストール
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

5.稼働確認

hello-worldコンテナを実行
$ sudo docker run hello-world

dockerコマンドをsudoなしで事項できるようにする

使用しているUserをDockerグループに入れる。
これにより、/var/run/docker.sockに書込み権限を付加できるのでsudoなしでdocker ps等が打てるようになる。

Dockerグループに追加
sudo usermod -aG docker $(whoami)

ログアウトしても反映されない場合があります。
その場合は、再起動しましょう!

docker imagesの格納場所を変更する

Dockerを多用した開発をした場合、docker imagesが増えてDiskを逼迫させる恐れがる。
デフォルトでは/var/lib/dockerがDocker Rootになっていて、このディレクトリにイメージが保存される。
また、複数のDiskをマウントしていてディレクトリを分けて保存している場合、/varを入れているDiskは小さくてすぐ一杯になる恐れがる。
その場合は、容量が大きいDiskに移しましょう!
そして、/var/lib/dockerにシンボルリンクを張れば、細かい設定変更なしで問題なく使用できます!

  1. DockerデーモンとDockerソケットを止める
  2. Docker Rootディレクトリを移動
  3. /var/lib/dockerのシンボルリンクを移動先に張る
  4. DockerデーモンとDockerソケットを起動
  5. hello-worldコンテナが起動するか確認
Docker Rootディレクトリを変更
$ sudo systemctl stop docker.service
$ sudo systemctl stop docker.socket
$ mv /var/lib/docker ~/dockerRoot/
$ ln -s ~/dockerRoot/docker /var/lib/docker
$ sudo systemctl start docker.service
$ sudo systemctl start docker.socket
$ sudo docker run hello-world

Dockerプラグインにパスを通す

$PATHに追加しても良いが、/usr/local/binにシンボルリンクを張る。
/usr/local/binはパスが通っているので、ここにシンボルリンクを張るだけで使用できる。

Dockerプラグインにパスを通す
$ ln -s /usr/libexec/docker/cli-plugins/ /usr/local/bin/

参考資料

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