1. 程式人生 > >一、安裝Docker CE

一、安裝Docker CE

解除安裝舊版本

較舊版本的Docker被稱為dockerdocker-engine。如果已安裝這些,需要解除安裝以及相關的依賴項。

$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

安裝Docker CE

您可以根據需要以不同方式安裝Docker CE:

  • 大多數使用者設定Docker的倉庫並從中進行安裝,以便於安裝和升級任務。這是推薦的方法。
  • 有些使用者下載RPM軟體包並手動安裝並完全手動管理升級。這在沒有訪問網際網路的系統上安裝Docker的情況下非常有用。
  • 在測試和開發環境中,一些使用者選擇使用自動便捷指令碼來安裝Docker。

使用倉庫安裝

在新主機上首次安裝Docker CE之前,需要設定Docker倉庫。之後,您可以從倉庫安裝和更新Docker

設定儲存庫

  1. 安裝所需的包。

    yum-utils提供yum-config-manager

    實用程式,devicemapper儲存驅動程式需要device-mapper-persistent-datalvm2

    $ sudo yum install -y yum-utils \
      device-mapper-persistent-data \
      lvm2
  2. 設定穩定儲存庫。

    使用以下命令設定穩定儲存庫

    $ sudo yum-config-manager \
        --add-repo \
        https://download.docker.com/linux/centos/docker-ce.repo

    可選:啟用edgetest儲存庫。這些儲存庫包含在上面的docker.repo

    檔案中,但預設情況下處於禁用狀態。您可以將它們與穩定儲存庫一起啟用。

    $ sudo yum-config-manager --enable docker-ce-edge
    $ sudo yum-config-manager --enable docker-ce-test

    通過使用--disable標誌執行yum-config-manager命令來禁用edgetest倉庫。要重新啟用,使用--enable標誌。以下命令禁用edge倉庫。

    $ sudo yum-config-manager --disable docker-ce-edge

    注意:從Docker 17.06開始,穩定版本也會被推送到邊緣並測試儲存庫。

安裝DOCKER CE

  1. 安裝最新版本

    安裝最新版本Docker CE,或轉到下一步安裝特定版本:

    $ sudo yum install docker-ce

    如果提示接受GPG金鑰,請確認指紋符合060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35,如果符合,則接受該指紋。

    執行以上命令安裝後,Docker已安裝但尚未啟動。並已建立docker組,但未向該組新增任何使用者。

  2. 安裝特定版本

    • 要安裝特定版本Docker CE,可列出repo中的可用版本,然後選擇並安裝

      $ yum list docker-ce --showduplicates | sort -r
      docker-ce.x86_64  18.06.1.ce-3.el7         docker-ce-stable
      docker-ce.x86_64  18.06.0.ce-3.el7         docker-ce-stable
      docker-ce.x86_64  18.03.1.ce-1.el7.centos  docker-ce-stable
      docker-ce.x86_64  18.03.0.ce-1.el7.centos  docker-ce-stable

      返回的列表取決於啟用的倉庫,並且特定於您的CentOS版本(在此示例中以.el7字尾表示CentOS7)。

    • 通過其完全限定的包名稱安裝特定版本

      包名稱(docker-ce)加上版本字串(第2列),中間用連字元( - )分隔,

      例如,docker-ce-18.06.1.ce

      $ sudo yum install docker-ce-18.06.1.ce

      執行以上命令安裝後,Docker已安裝但尚未啟動。並已建立docker組,但未向該組新增任何使用者。

啟動測試Docker

  1. 啟動Docker

    $ sudo systemctl start docker
  2. 通過執行hello-world映像驗證是否正確安裝了docker。

    $ sudo docker run hello-world

    此命令下載hello-world映象並在容器中執行它。當容器執行時,它會列印訊息並退出。

    如果網路下載失敗,可能需要配置國內加速器,或者需要使用代理連線,可以通過下面的Linux安裝後配置進行配置

升級DOCKER CE

要升級Docker CE,選擇特定版本安裝新版本或選擇安裝最新版本。

使用包安裝

如果您無法使用Docker儲存庫來安裝Docker,可以下載適用於您的發行版的.rpm檔案並手動安裝。每次要升級Docker時都需要下載新檔案。

安裝Docker CE

  • CentOS

    1. 轉到https://download.docker.com/linux/centos/7/x86_64/stable/Packages/並下載要安裝的Docker版本的.rpm檔案。

      注意:要安裝edgetest包,請將上述URL中的單詞stable更改為edgetest

    2. 安裝Docker CE,將下面的路徑更改為Docker軟體包的路徑。

      Docker的`docker.rpm包在使用者主目錄下

      $ sudo yum install ~/docker.rpm

      Docker已安裝但尚未啟動。已建立docker組,但未向該組新增任何使用者。

升級DOCKER CE

要升級Docker CE,請下載較新的軟體包檔案並重復安裝過程,使用yum -y upgrade,而不是yum -y install,並指向新軟體包。

解除安裝 Docker CE

解除安裝Docker包:

$ sudo yum remove docker-ce

主機上的影象,容器,卷或自定義配置檔案不會自動刪除。

要刪除所有影象,容器和卷:

$ sudo rm -rf /var/lib/docker

二、Docker安裝後配置

HTTP/HTTPS代理

如果您使用HTTPHTTPS代理伺服器,例如在公司設定中,您需要在Docker systemd service檔案中新增此配置。

  1. 為Docker服務建立一個 systemd多級目錄:

    $ sudo mkdir -p /etc/systemd/system/docker.service.d
  2. 建立一個名為/etc/systemd/system/docker.service.d/http-proxy.conf的檔案。新增HTTP_PROXY環境變數:

    [Service]
    Environment="HTTP_PROXY=http://username:[email protected]:80/"

    或者,如果您在HTTPS代理伺服器後面,建立一個名為/etc/systemd/system/docker.service.d/https-proxy.conf的檔案,新增HTTPS_PROXY環境變數:

    [Service]
    Environment="HTTPS_PROXY=https://username:[email protected]:80/"
  3. 如果您有自己的私有Docker倉庫,而無需代理,您可以通過NO_PROXY環境變數指定它們:

    [Service]    
    Environment="HTTP_PROXY=http://username:[email protected]:80/" "NO_PROXY=localhost,127.0.0.1,docker-registry.somecorporation.com"

    或者, 如果您在 HTTPS 代理伺服器後面新增:

    [Service]    
    Environment="HTTPS_PROXY=https://username:[email protected]:80/" "NO_PROXY=localhost,127.0.0.1,docker-registry.somecorporation.com"
  4. 重新整理更改:

    $ sudo systemctl daemon-reload
  5. 重啟Docker:

    $ sudo systemctl restart docker
  6. 驗證配置已經載入:

    $ systemctl show --property=Environment docker
    Environment=HTTP_PROXY=http://username:[email protected]:80/

    或者:

    $ systemctl show --property=Environment docker
    Environment=HTTPS_PROXY=https://username:[email protected]:80/

以非root身份管理Docker

Docker daemon繫結到Unix socket而不是TCP埠。預設情況下,Unix socket由使用者root擁有,而其他使用者只能使用sudo訪問它。 Docker daemon始終以root使用者身份執行。

如果您不想在docker命令前加上sudo,可以建立一個名為dockerUnix組並向其新增使用者。當Docke啟動時,它會建立一個可由docker組成員訪問的Unix socket

警告

docker組授予與root使用者等效的許可權。
有關這將如何影響系統安全性的詳細資訊,請參閱Docker Daemon Attack Surface

要建立docker組並新增您的使用者:

  1. 建立docker組

    $ sudo groupadd docker
  2. 將您的使用者新增到docker組

    $ sudo usermod -aG docker $USER
  3. 登出並重新登入,以便您的組成員身份生效。

  4. 驗證您是否可以在沒有sudo的情況下執行docker命令.

    $ docker run hello-world

    如果容器執行,它會列印訊息並退出,說明設定生效

    如果在將使用者新增到docker組之前最初使用sudo執行Docker CLI命令,則可能會看到以下錯誤,這表示由於sudo命令而建立的〜/.docker/目錄的許可權不正確。

    WARNING: Error loading config file: /home/user/.docker/config.json -
    stat /home/user/.docker/config.json: permission denied

    要解決此問題,請刪除〜/.docker/目錄(它會自動重新建立,但任何自定義設定都將丟失),或使用以下命令更改其所有權和許可權:

    $ sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
    $ sudo chmod g+rwx "$HOME/.docker" -R

隨系統啟動而啟動

  • systemd

    開啟隨系統啟動

    $ sudo systemctl enable docker

    關閉隨系統啟動,改用disable。

    $ sudo systemctl disable docker

    檢視狀態

    $ sudo systemctl is-enabled docker

    如果需要其他自定義,請參閱自定義系統的Docker守護程式選項