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


Dockerのリポジトリを設定する

  1. apt パッケージを更新します。
    $ sudo apt update
  2. 必要なパッケージをインストールします。
    $ sudo apt install \
        apt-transport-https \
        ca-certificates \
        curl \
        gnupg-agent \
        software-properties-common
    $ sudo apt install \
        > apt-transport-https \
        > ca-certificates \
        > curl \
        > gnupg-agent \
        > software-properties-common
    パッケージリストを読み込んでいます... 完了
    依存関係ツリーを作成しています
    状態情報を読み取っています... 完了
    ca-certificates はすでに最新バージョン (20180409) です。
    software-properties-common はすでに最新バージョン (0.96.24.32.7) です。
    以下の追加パッケージがインストールされます:
    libcurl4
    以下のパッケージが新たにインストールされます:
    apt-transport-https curl gnupg-agent libcurl4
    アップグレード: 0 個、新規インストール: 4 個、削除: 0 個、保留: 0 個。
    379 kB のアーカイブを取得する必要があります。
    この操作後に追加で 1,232 kB のディスク容量が消費されます。
    続行しますか? [Y/n] y
    取得:1 http://jp.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 apt-transport-https all 1.6.8 [1,692 B]
    取得:2 http://jp.archive.ubuntu.com/ubuntu bionic-updates/main amd64 libcurl4 amd64 7.58.0-2ubuntu3.6 [214 kB]
    取得:3 http://jp.archive.ubuntu.com/ubuntu bionic-updates/main amd64 curl amd64 7.58.0-2ubuntu3.6 [159 kB]
    取得:4 http://jp.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 gnupg-agent all 2.2.4-1ubuntu1.2 [4,880 B]
    379 kB を 1秒 で取得しました (707 kB/s)
    以前に未選択のパッケージ apt-transport-https を選択しています。
    (データベースを読み込んでいます ... 現在 117129 個のファイルとディレクトリがインストールされています。)
    .../apt-transport-https_1.6.8_all.deb を展開する準備をしています ...
    apt-transport-https (1.6.8) を展開しています...
    以前に未選択のパッケージ libcurl4:amd64 を選択しています。
    .../libcurl4_7.58.0-2ubuntu3.6_amd64.deb を展開する準備をしています ...
    libcurl4:amd64 (7.58.0-2ubuntu3.6) を展開しています...
    以前に未選択のパッケージ curl を選択しています。
    .../curl_7.58.0-2ubuntu3.6_amd64.deb を展開する準備をしています ...
    curl (7.58.0-2ubuntu3.6) を展開しています...
    以前に未選択のパッケージ gnupg-agent を選択しています。
    .../gnupg-agent_2.2.4-1ubuntu1.2_all.deb を展開する準備をしています ...
    gnupg-agent (2.2.4-1ubuntu1.2) を展開しています...
    apt-transport-https (1.6.8) を設定しています ...
    libcurl4:amd64 (7.58.0-2ubuntu3.6) を設定しています ...
    libc-bin (2.27-3ubuntu1) のトリガを処理しています ...
    man-db (2.8.3-2ubuntu0.1) のトリガを処理しています ...
    gnupg-agent (2.2.4-1ubuntu1.2) を設定しています ...
    curl (7.58.0-2ubuntu3.6) を設定しています ...
  3. Docker 公式の GPG 公開鍵をインストールします。
    $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    OK
  4. fingerprint 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88であることを確認します。
    $ sudo apt-key fingerprint 0EBFCD88
    $ sudo apt-key fingerprint 0EBFCD88
    pub  rsa4096 2017-02-22 [SCEA]
         9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
    uid          [ unknown] Docker Release (CE deb) 
    sub  rsa4096 2017-02-22 [S]
  5. repository (stable) を追加します。(x86_64 / amd64 アーキテクチャの場合)
    $ sudo add-apt-repository \
        "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
        $(lsb_release -cs) \
        stable"
    $ sudo add-apt-repository \
        "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
        $(lsb_release -cs) \
        stable"
    ヒット:1 http://jp.archive.ubuntu.com/ubuntu bionic InRelease
    取得:2 http://jp.archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]
    取得:3 http://jp.archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB]
    カ荳シ倖4 https://download.docker.com/linux/ubuntu bionic InRelease [64.4 kB]
    取得:5 https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages [4,448 B]
    ヒット:6 http://security.ubuntu.com/ubuntu bionic-security InRelease
    232 kB を 1秒 で取得しました (414 kB/s)
    パッケージリストを読み込んでいます... 完了

Docker をインストールする

最新版のDocker をインストールします。

Dockerの最新版をインストールする

  1. apt パッケージを更新します。
    $ sudo apt update
  2. 最新版をインストールします。
    $ sudo apt-get install docker-ce docker-ce-cli containerd.io
    $ sudo apt-get install docker-ce docker-ce-cli containerd.io
    パッケージリストを読み込んでいます... 完了
    依存関係ツリーを作成しています
    状態情報を読み取っています... 完了
    以下の追加パッケージがインストールされます:
    aufs-tools cgroupfs-mount git git-man liberror-perl pigz
    提案パッケージ:
    git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-cvs git-mediawiki git-svn
    以下のパッケージが新たにインストールされます:
    aufs-tools cgroupfs-mount containerd.io docker-ce docker-ce-cli git git-man liberror-perl pigz
    アップグレード: 0 個、新規インストール: 9 個、削除: 0 個、保留: 0 個。
    55.3 MB のアーカイブを取得する必要があります。
    この操作後に追加で 277 MB のディスク容量が消費されます。
    続行しますか? [Y/n] y
    取得:1 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 pigz amd64 2.4-1 [57.4 kB]
    取得:2 https://download.docker.com/linux/ubuntu bionic/stable amd64 containerd.io amd64 1.2.2-3 [19.9 MB]
    取得:3 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 aufs-tools amd64 1:4.9+20170918-1ubuntu1 [104 kB]
    取得:4 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 cgroupfs-mount all 1.4 [6,320 B]
    取得:5 http://jp.archive.ubuntu.com/ubuntu bionic/main amd64 liberror-perl all 0.17025-1 [22.8 kB]
    取得:6 http://jp.archive.ubuntu.com/ubuntu bionic-updates/main amd64 git-man all 1:2.17.1-1ubuntu0.4 [803 kB]
    取得:7 http://jp.archive.ubuntu.com/ubuntu bionic-updates/main amd64 git amd64 1:2.17.1-1ubuntu0.4 [3,907 kB]
    取得:8 https://download.docker.com/linux/ubuntu bionic/stable amd64 docker-ce-cli amd64 5:18.09.2~3-0~ubuntu-bionic [13.2
    MB]
    取得:9 https://download.docker.com/linux/ubuntu bionic/stable amd64 docker-ce amd64 5:18.09.2~3-0~ubuntu-bionic [17.4 MB]
    55.3 MB を 58秒 で取得しました (957 kB/s)
    以前に未選択のパッケージ pigz を選択しています。
    (データベースを読み込んでいます ... 現在 117150 個のファイルとディレクトリがインストールされています。)
    .../0-pigz_2.4-1_amd64.deb を展開する準備をしています ...
    pigz (2.4-1) を展開しています...
    
    (snip)
    
    git (1:2.17.1-1ubuntu0.4) を設定しています ...
    docker-ce (5:18.09.2~3-0~ubuntu-bionic) を設定しています ...
    update-alternatives: /usr/bin/dockerd (dockerd) を提供するために自動モードで /usr/bin/dockerd-ce を使います
    Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /lib/systemd/system/docker.service.
    Created symlink /etc/systemd/system/sockets.target.wants/docker.socket → /lib/systemd/system/docker.socket.
    ureadahead (0.100.0-20) のトリガを処理しています ...
    systemd (237-3ubuntu10.12) のトリガを処理しています ...

DockerにProxyを設定する

Dockerイメージを取得するためには、外部ネットワークへのアクセスが必要です。直接外部ネットワークにアクセスすることができず Proxy サーバを経由している場合はDocekrにProxyの設定が必要となります。直接外部ネットワークにアクセスすることが可能な場合には、Proxy の設定は不要です。

  1. docker.service.d ディレクトリを作成します。
    $ sudo mkdir -p /etc/systemd/system/docker.service.d
  2. /etc/systemd/system/docker.service.d/http-proxy.conf を作成し HTTP_PROXY および HTTPS_PROXY 環境変数を追加します。
    $ sudo vi /etc/systemd/system/docker.service.d/http-proxy.conf
    [Service]
      Environment="HTTP_PROXY=http://proxy.example.com:8080/"
      Environment="HTTPS_PROXY=http://proxy.example.com:8080/"
  3. 変更を適用します。
    $ sudo systemctl daemon-reload
  4. Docker を再起動します。
    $ sudo systemctl restart docker
  5. 変更が適用されているか確認するため、以下のコマンドを実行します。
    $ systemctl show --property=Environment docker

Dockerの動作確認をする

  1. 動作確認のため Hello world サンプルdocerイメージを取得して実行します。
    $ sudo docker run -rm hello-world
    $ sudo docker run hello-world
    Unable to find image 'hello-world:latest' locally
    latest: Pulling from library/hello-world
    1b930d010525: Pull complete
    Digest: sha256:2557e3c07ed1e38f26e389462d03ed943586f744621577a99efb77324b0fe535
    Status: Downloaded newer image for hello-world:latest
    
    Hello from Docker!
    This message shows that your installation appears to be working correctly.
    
    To generate this message, Docker took the following steps:
    1. The Docker client contacted the Docker daemon.
    2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
    3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
    4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.
    
    To try something more ambitious, you can run an Ubuntu container with:
    $ docker run -it ubuntu bash
    
    Share images, automate workflows, and more with a free Docker ID:
    https://hub.docker.com/
    
    For more examples and ideas, visit:
    https://docs.docker.com/get-started/
  2. サンプルdocerイメージを消去します。
    $ sudo docker rmi hello-world