Ubuntu Server 18.04にDockerをインストールする

OS: Ubuntu Server 18.04.1 LTS

一口にDockerと云ってもCEとEEと云う2つのエディションが存在し、CEは無償で利用できるCommunity Editionであり、EEがEnterprise Editionという有償のソフトウェアのようである。

一先ずapt searchで現れたdockerパッケージをインストールすればよかろうと考え、勢い勇んで導入したけれどもコンテナ技術とはちっとも因縁のないwmdockerコマンドが使用できるようになるだけで今の所、出番はなさそうな情勢である。

$ apt search docker
(snip)
docker/bionic 1.5-1build1 amd64
  System tray for KDE3/GNOME2 docklet applications

コンテナ技術に係るほうのDockerを導入する手立ては幾つか用意されている模様で、一つはDockerのリポジトリを追加するものである。或いはDockerパッケージをインストールするやり口もある。

今般はDockerのリポジトリを追加してインストールする方針で舵取りをする。公式サイトの説明書にインストールの手引きが記してあるから此れと照らし合わせながら作業を進めてゆく。

$ sudo apt update
$ sudo apt install apt-transport-https ca-certificates curl software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
OK

公開鍵を追加して其のフィンガープリントを確認する。9DC858229FC7DD38854AE2D88D81803C0EBFCD88にピタリと一致するものが追加されているのでなんとなくdockerのリポジトリサーバへ接続するような豫覚を感じ取れる。

$ apt-key list 9DC858229FC7DD38854AE2D88D81803C0EBFCD88
pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb) <docker@docker.com>
sub   rsa4096 2017-02-22 [S]

Dockerの公式リポジトリを追加するにあたってはCPUのアーキテクチャに合わせて記載する。公式の説明書にはアーキテクチャ毎に記載内容が用意されているから大変行き届いている。アーキテクチャはuname -mあたりのコマンドから推し量って調べをつけておけば宜しいと思う。

$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

此の操作によって/etc/apt/sources.listに次の二行が挿入される。

$ cat /etc/apt/sources.list
deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable
# deb-src [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable

新たなリポジトリを追加したから此処で改めてapt updateを実行してパッケージインデックスファイルを同期しておく。

$ sudo apt update
All packages are up to date.

然り而して愈々Dockerのインストールが可能になる。Dockerのパッケージ名はdocker-ceであると云う。

$ sudo apt install docker-ce

Docker CEが正しくインストールされたか検証するためにhello-worldイメージを起動する。This message shows that your installation appears to be working correctly.との掲示から申し分なく導入された模様である。

$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
d1725b59e92d: Pull complete
Digest: sha256:0add3ace90ecb4adbf7777e9aacf18357296e799f81cabc9fde470971e499788
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.
(snip)
図1. hello-worldイメージを起動した様子

もう幾らか試してみたい向きにはdocker run -it ubuntu bashで以って簡素なUbuntuを導入して様々な動作を検証することができるようである。

図2. コンテナ内でbashを立ち上げた様子

取得したイメージを確認する場合はこういう具合である。

$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              4ab4c602aa5e        2 months ago        1.84kB
ubuntu              latest              93fd78260bd1        19 hours ago        86.2MB

1.84kBもの容量を占拠するhello-worldイメージはもうたくさんだという世論が高まればrmiコマンドによって削除することができるというから此れを試みたところコンテナID 0a105932ce9aのコンテナがhello-worldイメージを未だ参照している事で削除の妨げとなっている。

$ sudo docker rmi hello-world
Error response from daemon: conflict: unable to remove repository reference "hello-world" (must force) - container 0a105932ce9a is using its referenced image 4ab4c602aa5e

予めrmコマンドで以って参照しているコンテナを削除して皆がhello-worldのイメージに見向きもしない状況へ押し込んでやると良いようである。

$ sudo docker rm 0a105932ce9a
0a105932ce9a

改めてイメージの削除を試みると無事、電子の藻屑と化した。

$ sudo docker rmi 4ab4c602aa5e
Untagged: hello-world:latest
Untagged: hello-world@sha256:0add3ace90ecb4adbf7777e9aacf18357296e799f81cabc9fde470971e499788
Deleted: sha256:4ab4c602aa5eed5528a6620ff18a1dc4faef0e1ab3a5eddeddb410714478c67f
Deleted: sha256:428c97da766c4c13b19088a471de6b622b038f3ae8efa10ec5a37d6d31a2df0b

$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

Dockerの与るファイルを概ね削除してしまうならこういう手続きで良さそうである。設定ファイルは自動で削除されないから手動での作業を余儀なくされるようである。

$ sudo apt purge docker-ce
$ sudo add-apt-repository --remove "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
$ sudo apt-key del 9DC858229FC7DD38854AE2D88D81803C0EBFCD88
$ sudo rm -rfv /var/lib/docker/

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください