Dockerとは
3つの特徴
- リソース効率がよい
- ポータビリティがある
- 環境の起動が早い
Dockerについての詳細は他のサイトや書籍で詳しく説明されているので、そちらを参照してください。
本稿ではDockerの環境構築について、まずローカル環境にインストールする方法について紹介します。
おすすめサイト:
おすすめ参考書:
Dockerのインストール(Ubuntu18.04)
Docker公式サイトのInstall Docker Engine on Ubuntuを参考にインストール方法を紹介します。
本稿では、Docker CE 19系のインストールを行います。
リポジトリのセットアップ
aptを更新してから必要なパッケージをインストールしておく。
$ sudo apt update
$ sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
Dockerの公式GPG鍵を追加する。
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# keyの確認
$ sudo apt-key fingerprint 0EBFCD88
pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ 不明 ] Docker Release (CE deb) <docker@docker.com>
sub rsa4096 2017-02-22 [S]
stable版のリポジトリを設定する
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
Docker Engineのインストール
- 最新版のインストール(推奨)
aptを更新してから、最新版のDocker Engineとcontainerdをインストール。
$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io
複数のDockerリポジトリを有効にしている場合、
apt install
やapt update
コマンドでバージョンを指定せずにインストールやアップデートを行うと、常に可能な限り高いバージョンがインストールされます。
- バージョン指定でインストール
下記コマンドでインストール可能なバージョン一覧を表示する。
$ apt-cache madison docker-ce
docker-ce | 5:19.03.11~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
docker-ce | 5:19.03.10~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
...
バージョンを指定してapt install
する。
$ sudo apt install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io
# 例)<VERSION_STRING> = 5:19.03.11~3-0~ubuntu-bionic
動作確認
インストールしたDockerのバージョンを確認。今回はVersion = 19.03.11
がインストールされたことが確認できます。
$ docker version
Client: Docker Engine - Community
Version: 19.03.11
API version: 1.40
Go version: go1.13.10
Git commit: 42e35e61f3
Built: Mon Jun 1 09:12:22 2020
OS/Arch: linux/amd64
Experimental: false
hello-world
イメージを実行して、正しく動作することを確認する。
以下のような表示がされれば正常に動作しています。
$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:6a65f928fb91fcfbc963f7aa6d57c8eeb426ad9a20c7ee045538ef34847f44f1
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
...
ダウンロードしたhello-world
イメージを一覧表示する。
$ sudo docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 5 months ago 13.3kB
コンテナの情報出力を確認する。
$ sudo docker ps --all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5b4c35a7c747 hello-world "/hello" 3 minutes ago Exited (0) 3 minutes ago quirky_buck
5478109230b1 hello-world "/hello" 25 minutes ago Exited (0) 25 minutes ago elastic_mclaren
※docker ps -a
でも同様
※docker ps
の場合、実行中のコンテナのみ表示される
コンテナの情報出力ps
コマンドの詳細はこちらを参照。
Docker デーモンの起動
Dockerをインストールしたら、Dockerデーモンを起動する必要があります。
多くのLinuxディストリビューションでは、systemd
を使ってDockerデーモンを起動するようです。
$ sudo systemctl start docker
# 他のディストリビューションでは、次のように実行します
$ sudo service docker start
Docker をブート時に自動起動したい場合は、以下のコマンドを利用してください。
$ sudo systemctl enable docker
# 他のディストリビューションでは、次のように実行します
$ sudo chkconfig docker on
- 例)実行すると以下のように表示されると思います。
$ sudo systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabl
Active: active (running) since Sat 2020-06-06 15:19:18 JST; 21min ago
Docs: https://docs.docker.com
Main PID: 5396 (dockerd)
Tasks: 17
CGroup: /system.slice/docker.service
└─5396 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.
root権限なしでDocker利用可能とする
# ユーザー名の確認
$ whoami
mjan
# Dockerグループの確認
$ cat /etc/group | grep docker
docker:x:999:
# "mjan"をDockerグループに追加
$ sudo gpasswd -a mjan docker
ユーザ mjan をグループ docker に追加
# Dockerグループに追加されていることを確認
$ cat /etc/group | grep docker
docker:x:999:mjan
Dockerが使用するソケットを一般ユーザでも読み込み出来るように権限を変更する
$ sudo chmod 666 /var/run/docker.sock
# 確認
$ ls -l /var/run/docker.sock
srw-rw-rw- 1 root docker 0 6月 6 15:19 /var/run/docker.sock
※
chmod 666
でパーミションを指定しています。詳しくはパーミッション早見表を参照。
権限付与前はClient
側しか表示されなかったが、Server
側も表示されるようになった。
$ docker version
Client: Docker Engine - Community
Version: 19.03.11
API version: 1.40
Go version: go1.13.10
Git commit: 42e35e61f3
Built: Mon Jun 1 09:12:22 2020
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.11
API version: 1.40 (minimum version 1.12)
Go version: go1.13.10
Git commit: 42e35e61f3
Built: Mon Jun 1 09:10:54 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.13
GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429
runc:
Version: 1.0.0-rc10
GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd
docker-init:
Version: 0.18.0
GitCommit: fec3683
コンテナ情報を出力するdocker ps -a
コマンドもsudo
なしで実行できるようになりました。
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5b4c35a7c747 hello-world "/hello" 3 minutes ago Exited (0) 3 minutes ago quirky_buck
5478109230b1 hello-world "/hello" 25 minutes ago Exited (0) 25 minutes ago elastic_mclaren
Dockerのアンインストール(Ubuntu18.04)
Docker Engine、CLI、Containerdパッケージをアンインストールする場合。
$ sudo apt-get purge docker-ce docker-ce-cli containerd.io
上記コマンドだけでは、ホスト上のイメージ、コンテナ、ボリューム、またはカスタマイズされた設定ファイルは自動的には削除されません。全てのイメージ、コンテナ、ボリュームを削除するには以下のコマンドも実行してください。
$ sudo rm -rf /var/lib/docker
Dockerの基本動作
次はDockerの基本動作を確認してみましょう。
▶ Dockerの基本動作 - Qiita |
---|
参考サイト
- Ubuntu 18.04にDockerをインストールする(+docker-composeも) - Qiita
- Install Docker Engine on Ubuntu | Docker Documentation
- Orientation and setup | Docker Documentation
- systemd と Docker の管理・設定 — Docker-docs-ja 1.9.0b ドキュメント
- Linux グループ一覧の確認と/etc/group ファイル
- パーミッション早見表
- 「Got permission denied while trying to connect to the Docker daemon socket」への対応 - Qiita