4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Docker環境の構築 - Ubuntu18.04

Last updated at Posted at 2020-06-06

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 installapt 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

参考サイト

4
4
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
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?