次の公式ドキュメントを参考にして、Ubuntu上にDockerをインストールしてみます。 リポジトリからインストールする方法とパッケージを使ったインストールがありますが、ここではリポジトリから インストールします。
準備
初めに古いバージョンがインストールされていたら削除しておきます。
$ sudo apt remove docker docker-engine docker.io containerd runc
Dockerのインストールに必要なパッケージをインストールします。
$ sudo apt update $ sudo apt install ca-certificates curl gnupg lsb-release
GPG鍵の追加
Dockerの公式GPG鍵を追加します。
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
curlのオプションは次の通りです。
- -f, --fail: サーバエラーのとき何も出力しない。
- -s, --silent: サイレントモード。プログレスメータとエラーメッセージを表示しない。
- -S, --show-error: サイレントモードでもエラーメッセージは表示する。
- -L, --location: リダイレクト
gpgのオプションは次の通りです。
- --dearmor: OpenPGP ASCII armor形式(Base64に似たテキスト形式)で出力
- -o, --output: ファイルに出力する。
gpgコマンドの実行で次のメッセージが出ます。これはgpgをsudoを使いroot ユーザーで実行しているが、 $HOMEの所有者がrootユーザーではないため。
gpg: WARNING: unsafe ownership on homedir '/home/xxxx/.gnupg'
リポジトリの設定
stableリポジトリを追加します。
$ 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
Docker Engineのインストール
先程リポジトリを追加したので、パッケージ情報を更新してからDocker Engineをインストールします。
$ sudo apt update $ sudo apt install docker-ce docker-ce-cli containerd.io
次のコマンドで、インストールされたDockerのバージョンとDocker Daemonの実行状態を知ることができます。
$ docker version $ service docker status
Dockerをrootユーザー以外で操作できるようにする
次のページを参考に、rootユーザー以外でもDockerを操作できるようにします。
dockerグループを作成し、ユーザーをdockerグループに追加します。
$ sudo groupadd docker $ sudo usermod -aG docker $USER
usermodのオプションは次の通りです。
- -a, --append: ユーザーをグループに追加する
- -G, --groups: グループのリスト
Dockerの動作確認
動作確認用のコンテナ hello-world が用意されているので、実行してみます。
$ docker run hello-world
"Hello from Docker!"が表示されたら成功です。このメッセージの下にはDockerがどのようなステップを踏んで このメッセージが表示したかの説明があります。
Dockerイメージの情報を表示してみます。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest feb5d9fea6a5 5 months ago 13.3kB
Dockerコンテナの情報を表示するには、次のコマンドを実行します。
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 183cd1c69ffd hello-world "/hello" 7 minutes ago Exited (0) 7 minutes ago inspiring_albattani
-a オプションは、停止しているものも含めてすべてのコンテナを表示します。
"ps -a"は"container ls -a"としても同じです。
不要なコンテナ/イメージの削除
コンテナは次のようにCONTAINER IDを指定して削除します。CONTAINER IDの指定は他のコンテナのCONTAINER IDと 曖昧さが残らない範囲の文字分の指定でも可能です。
$ docker rm 183cd1c69ffd
イメージの削除は次のようにIMAGE IDを指定します。こちらもコンテナと同じようにIMAGE IDの指定は曖昧さが 残らない範囲の指定で構いません。
$ docker rmi feb5d9fea6a5
Dockerのアンインストール
$ sudo apt purge docker-ce docker-ce-cli containerd.io $ sudo rm -rf /var/lib/docker $ sudo rm -rf /var/lib/containerd