03-6416-1579

平日 10:00-18:00

Ubuntu 20.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 はすでに最新バージョン (20190110ubuntu1.1) です。
    ca-certificates は手動でインストールしたと設定されました。
    以下のパッケージが自動でインストールされましたが、もう必要とされていません:
    libfprint-2-tod1 libllvm9 linux-headers-5.4.0-26 linux-headers-5.4.0-26-generic linux-image-5.4.0-26-generic
    linux-modules-5.4.0-26-generic linux-modules-extra-5.4.0-26-generic
    これを削除するには 'sudo apt autoremove' を利用してください。
    以下の追加パッケージがインストールされます:
    libcurl4 python3-software-properties software-properties-gtk
    以下のパッケージが新たにインストールされます:
    apt-transport-https curl gnupg-agent libcurl4
    以下のパッケージはアップグレードされます:
    python3-software-properties software-properties-common software-properties-gtk
    アップグレード: 3 個、新規インストール: 4 個、削除: 0 個、保留: 24 個。
    501 kB のアーカイブを取得する必要があります。
    この操作後に追加で 1,321 kB のディスク容量が消費されます。
    続行しますか? [Y/n] y
    取得:1 http://jp.archive.ubuntu.com/ubuntu focal-updates/universe amd64 apt-transport-https all 2.0.2ubuntu0.1 [1,708 B]
    取得:2 http://jp.archive.ubuntu.com/ubuntu focal-updates/main amd64 libcurl4 amd64 7.68.0-1ubuntu2.2 [233 kB]
    取得:3 http://jp.archive.ubuntu.com/ubuntu focal-updates/main amd64 curl amd64 7.68.0-1ubuntu2.2 [161 kB]
    取得:4 http://jp.archive.ubuntu.com/ubuntu focal/universe amd64 gnupg-agent all 2.2.19-3ubuntu2 [5,236 B]
    取得:5 http://jp.archive.ubuntu.com/ubuntu focal-updates/main amd64 software-properties-common all 0.98.9.2 [10.6 kB]
    取得:6 http://jp.archive.ubuntu.com/ubuntu focal-updates/main amd64 software-properties-gtk all 0.98.9.2 [64.0 kB]
    取得:7 http://jp.archive.ubuntu.com/ubuntu focal-updates/main amd64 python3-software-properties all 0.98.9.2 [25.2 kB]
    501 kB を 0秒 で取得しました (2,882 kB/s)
    以前に未選択のパッケージ apt-transport-https を選択しています。
    (データベースを読み込んでいます ... 現在 205518 個のファイルとディレクトリがインストールされています。)
    .../0-apt-transport-https_2.0.2ubuntu0.1_all.deb を展開する準備をしています ...
    apt-transport-https (2.0.2ubuntu0.1) を展開しています...
    以前に未選択のパッケージ libcurl4:amd64 を選択しています。
    .../1-libcurl4_7.68.0-1ubuntu2.2_amd64.deb を展開する準備をしています ...
    libcurl4:amd64 (7.68.0-1ubuntu2.2) を展開しています...
    以前に未選択のパッケージ curl を選択しています。
    .../2-curl_7.68.0-1ubuntu2.2_amd64.deb を展開する準備をしています ...
    curl (7.68.0-1ubuntu2.2) を展開しています...
    以前に未選択のパッケージ gnupg-agent を選択しています。
    .../3-gnupg-agent_2.2.19-3ubuntu2_all.deb を展開する準備をしています ...
    gnupg-agent (2.2.19-3ubuntu2) を展開しています...
    .../4-software-properties-common_0.98.9.2_all.deb を展開する準備をしています ...
    software-properties-common (0.98.9.2) で (0.98.9.1 に) 上書き展開しています ...
    .../5-software-properties-gtk_0.98.9.2_all.deb を展開する準備をしています ...
    software-properties-gtk (0.98.9.2) で (0.98.9.1 に) 上書き展開しています ...
    .../6-python3-software-properties_0.98.9.2_all.deb を展開する準備をしています ...
    python3-software-properties (0.98.9.2) で (0.98.9.1 に) 上書き展開しています ...
    apt-transport-https (2.0.2ubuntu0.1) を設定しています ...
    python3-software-properties (0.98.9.2) を設定しています ...
    gnupg-agent (2.2.19-3ubuntu2) を設定しています ...
    libcurl4:amd64 (7.68.0-1ubuntu2.2) を設定しています ...
    curl (7.68.0-1ubuntu2.2) を設定しています ...
    software-properties-common (0.98.9.2) を設定しています ...
    software-properties-gtk (0.98.9.2) を設定しています ...
    dbus (1.12.16-2ubuntu2.1) のトリガを処理しています ...
    shared-mime-info (1.15-1) のトリガを処理しています ...
    desktop-file-utils (0.24-1ubuntu3) のトリガを処理しています ...
    mime-support (3.64ubuntu1) のトリガを処理しています ...
    hicolor-icon-theme (0.17-2) のトリガを処理しています ...
    gnome-menus (3.36.0-1ubuntu1) のトリガを処理しています ...
    libglib2.0-0:amd64 (2.64.3-1~ubuntu20.04.1) のトリガを処理しています ...
    libc-bin (2.31-0ubuntu9) のトリガを処理しています ...
    man-db (2.9.1-1) のトリガを処理しています ...
  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 --rm hello-world
    [sudo] password for ********: 
    Unable to find image 'hello-world:latest' locally
    latest: Pulling from library/hello-world
    1b930d010525: Pull complete 
    Digest: sha256:4fe721ccc2e8dc7362278a29dc660d833570ec2682f4e4194f4ee23e415e1064
    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