全部產品
Search
文件中心

Simple Application Server:手動部署Docker

更新時間:Aug 16, 2024

Docker是一個開源的應用程式容器引擎,提供了容器的自動化打包、分發和啟動並執行工具和服務,具有隔離性好、可移植性強、易於管理等優勢。本文主要介紹如何在LinuxSimple Application Server中手工部署Docker,並提供了Docker常用操作、使用Docker製作鏡像的流程及其安裝並使用docker-compose部署WordPress。

說明
  • 您也可以通過應用鏡像快速部署Docker:

    • 如果您尚未建立Simple Application Server,建議您通過應用鏡像快速部署Docker。具體操作,請參見快速部署Docker(使用應用鏡像)

    • 如果已建立Simple Application Server,您也可以通過重設系統時選擇Docker應用鏡像部署Docker,但重設系統會清除Simple Application Server上的磁碟資料,請您根據需要做好資料備份。具體操作,請參見重設系統

  • 關於Docker的更多資訊,請參見Docker概述

準備工作

已建立LinuxSimple Application Server,並滿足以下配置。具體操作,請參見建立Simple Application Server

  • 作業系統:Alibaba Cloud Linux 3 64位、Alibaba Cloud Linux 2 64位、CentOS 7.x 64位、CentOS 8.x 64位、Ubuntu 22/20、Debain 11/12

  • 防火牆:入方向允許存取80和22連接埠。具體操作,請參見防火牆設定

部署Docker

  1. 遠端連線Simple Application Server。具體操作,請參見遠端連線Linux伺服器

  2. 安裝Docker。

    Alibaba Cloud Linux 3

    1. 運行以下命令,添加docker-ce的dnf源。

      sudo dnf config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    2. 運行以下命令,安裝Alibaba Cloud Linux 3專用的dnf源相容外掛程式。

      sudo dnf -y install dnf-plugin-releasever-adapter --repo alinux3-plus
    3. 運行以下命令,安裝Docker。

      sudo dnf -y install docker-ce --nobest
      說明

      安裝docker過程中如有問題請參考常見問題

    Alibaba Cloud Linux 2

    1. 運行以下命令,下載docker-ce的yum源。

      sudo wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    2. 運行以下命令,安裝Alibaba Cloud Linux 2專用的yum源相容外掛程式。

      sudo yum install yum-plugin-releasever-adapter --disablerepo=* --enablerepo=plus
    3. 運行以下命令,安裝Docker。

      sudo yum -y install docker-ce

    CentOS 7.x

    1. 運行以下命令,下載docker-ce的yum源。

      sudo wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    2. 運行以下命令,安裝Docker。

      sudo yum -y install docker-ce

    CentOS 8.x

    1. 切換CentOS 8源地址。

      CentOS 8作業系統版本結束了生命週期(EOL),按照社區規則,CentOS 8的源地址http://mirror.centos.org/centos/8/內容已移除,您在阿里雲上繼續使用預設配置的CentOS 8的源會發生報錯。如果您需要使用CentOS 8系統中的一些安裝包,則需要手動切換源地址。具體操作,請參見CentOS 8 EOL如何切換源?

    2. 運行以下命令,安裝DNF。

      sudo yum -y install dnf
    3. 運行以下命令,安裝Docker儲存驅動的依賴包。

      sudo dnf install -y device-mapper-persistent-data lvm2
    4. 運行以下命令,添加穩定的Docker軟體源。S

      sudo dnf config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    5. 運行以下命令,檢查Docker軟體源是否已添加。

      sudo dnf list docker-ce

      出現如下圖所示回顯,表示Docker軟體源已添加。

      image..png

    6. 運行以下命令安裝Docker。

      sudo dnf install -y docker-ce --nobest

    Ubuntu(18/22/20)/Debian(11/12)

    1. 更新軟體包列表。

      sudo apt update
    2. 安裝Docker所需依賴包。

      sudo apt-get -y install ca-certificates curl
    3. 建立/etc/apt/keyrings目錄,並下載Docker的官方GPG密鑰到該目錄。

      Ubuntu 18/22/20

      sudo install -m 0755 -d /etc/apt/keyrings
      sudo curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
      sudo chmod a+r /etc/apt/keyrings/docker.asc

      Debian 11/12

      sudo install -m 0755 -d /etc/apt/keyrings
      sudo curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
      sudo chmod a+r /etc/apt/keyrings/docker.asc
    4. 將Docker倉庫添加到系統的軟體源列表。

      Ubuntu 18/22/20

      echo \
        "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] http://mirrors.aliyun.com/docker-ce/linux/ubuntu \
        $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
        sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

      Debian 11/12

      echo \
        "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] http://mirrors.aliyun.com/docker-ce/linux/debian \
        $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
        sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    5. 更新軟體包列表。

      sudo apt update
    6. 安裝Docker。

      sudo apt-get install -y docker-ce docker-ce-cli containerd.io
  3. 查看docker版本資訊。

    docker -v

    如下圖回顯資訊所示,表示Docker已安裝成功。

    image..png

  4. 啟動Docker守護進程並設定開機自啟動。

    • 執行以下命令,啟動Docker服務,並設定開機自啟動。

      sudo systemctl start docker
      sudo systemctl enable docker
    • 執行以下命令,查看Docker是否啟動。

      sudo systemctl status docker

      如下圖回顯所示,表示Docker已啟動。

      image..png

Docker基本操作

下文只列出Docker基本用法,更詳細的操作命令,請參見Docker官網

Docker進程管理

  • 啟動Docker守護進程

    sudo systemctl start docker
  • 查看Docker的運行狀態

    sudo systemctl status docker
  • 停止Docker守護進程

    sudo systemctl stop docker
  • 重啟Docker守護進程

    sudo systemctl restart docker
  • 設定Docker開機自啟動

    sudo systemctl enable docker

管理鏡像

本文以阿里雲倉庫的Apache鏡像為例,介紹如何使用Docker管理鏡像。

  • 拉取鏡像。

    sudo docker pull registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5
  • 修改標籤。如果鏡像名稱較長,您可以修改鏡像標籤以便記憶區分。

    sudo docker tag registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5:latest aliweb:v1
  • 查看已有鏡像。

    sudo docker images
  • 強制移除鏡像。

    sudo docker rmi -f registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5

管理容器

重要
  • 下文的<鏡像ID>可通過docker images命令查詢。

  • 如果您要在容器內部運行相關命令,您可以通過在容器中運行cat /etc/os-release提前確認您的容器作業系統類型及版本,以便使用合適的命令來完成您的操作。

  • 啟動一個容器。

    您可以通過守護模式或者互動模式啟動一個容器。

    說明
    • 使用守護模式啟動的容器,退出容器後容器會保持運行狀態。

    • 使用互動模式啟動的容器,退出容器後容器狀態會變成Exited,您可以使用sudo docker start <容器ID>命令使容器恢複運行狀態。

    使用守護模式啟動容器

    sudo docker run -d --name <容器名> <鏡像ID>

    使用互動模式啟動容器

    # 使用互動模式啟動一個新容器。
    sudo docker run -it <鏡像ID> /bin/bash
  • 查看容器ID。

    sudo docker ps -a
  • 啟動停止狀態的容器。

    sudo docker start <容器ID>
  • 在一個運行中的容器中執行命令。

    sudo docker exec -it <容器ID> /bin/bash
    說明

    如果要退出容器,可以執行exit命令。

使用Docker製作鏡像

本步驟指導如何通過Dockerfile定製製作一個簡單的Nginx鏡像。

  1. 執行以下命令,拉取鏡像。本樣本以拉取阿里雲倉庫的Apache鏡像為例。

    sudo docker pull registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5
  2. 修改鏡像名稱標籤,便於記憶。

    sudo docker tag registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5:latest aliweb:v1
  3. 執行以下命令,建立並編輯Dockerfile檔案。

    1. 執行以下命令,建立並編輯Dockerfile檔案。

      vim Dockerfile
    2. i進入編輯模式,並添加以下內容,改造原鏡像。

      #聲明基礎鏡像來源。
      FROM aliweb:v1
      #聲明鏡像擁有者。
      MAINTAINER DTSTACK
      #RUN後面接容器運行前需要執行的命令,由於Dockerfile檔案不能超過127行,因此當命令較多時建議寫到指令碼中執行。
      RUN mkdir /dtstact
      #開機啟動命令,此處最後一個命令需要是可在前台持續執行的命令,否則容器後台運行時會因為命令執行完而退出。
      ENTRYPOINT ping www.aliyun.com
    3. Esc鍵,輸入:wq並按Enter鍵,儲存並退出Dockerfile檔案。

  4. 執行以下命令,基於基礎鏡像nginx構建新鏡像。

    命令格式為docker build -t <鏡像名稱>:<鏡像版本> .命令末尾的.表示Dockerfile檔案的路徑,不能忽略。以構建新鏡像aliweb:v2為例,則命令為:

    sudo docker build -t aliweb:v2 .
  5. 執行以下命令,查看新鏡像是否構建成功。

    sudo docker images 

    如下圖回顯所示,表示構建成功。

    image..png

安裝並使用docker-compose

docker-compose是Docker官方提供的用於定義和運行多個Docker容器的開源容器編排工具,可以使用YAML檔案來配置應用程式需要的所有服務,然後使用docker-compose運行命令解析YAML檔案配置,建立並啟動設定檔中的所有Docker服務,具有營運成本低、部署效率高等優勢。

關於docker-compose的更多資訊,請參見Docker官網

重要

僅Python 3及以上版本支援docker-compose,並請確保已安裝pip。

安裝docker-compose

  1. 運行以下命令,安裝setuptools。

    sudo pip3 install -U pip setuptools
  2. 運行以下命令,安裝docker-compose。

    sudo pip3 install docker-compose
  3. 運行以下命令,驗證docker-compose是否安裝成功。

    docker-compose --version

    如果回顯返回docker-compose版本資訊,表示docker-compose已安裝成功。

使用docker-compose部署應用

下文以部署WordPress為例,介紹如何使用docker-compose部署應用。

  1. 建立並編輯docker-compose.yaml檔案。

    1. 運行以下命令,建立docker-compose.yaml檔案。

      sudo vim docker-compose.yaml
    2. 按下i鍵,進入編輯模式,新增以下內容。

      本樣本以安裝WordPress為例。

      version: '3.1'             # 版本資訊
      
      services:
      
        wordpress:               # 服務名稱         
          image: wordpress       # 鏡像名稱
          restart: always        # docker啟動,當前容器必啟動
          ports:
            - 80:80              # 映射連接埠
          environment:           # 編寫環境
            WORDPRESS_DB_HOST: db
            WORDPRESS_DB_USER: wordpress
            WORDPRESS_DB_PASSWORD: 123456
            WORDPRESS_DB_NAME: wordpress
          volumes:               # 映射資料卷
            - wordpress:/var/www/html
      
        db:                      # 服務名稱    
          image: mysql:5.7       # 鏡像名稱
          restart: always        # docker啟動,當前容器必啟動
          ports:
             - 3306:3306         # 映射連接埠
          environment:           # 環境變數
            MYSQL_DATABASE: wordpress
            MYSQL_USER: wordpress
            MYSQL_PASSWORD: 123456
            MYSQL_RANDOM_ROOT_PASSWORD: '1'
          volumes:               # 卷掛載路徑
            - db:/var/lib/mysql
      
      volumes:
        wordpress:
        db:
    3. 按下Esc鍵,退出編輯模式,然後輸入:wq儲存並退出。

  2. 執行以下命令,啟動應用。

    sudo env "PATH=$PATH" docker-compose up -d
  3. 在瀏覽器中輸入https://輕量應用服務執行個體的公網IP,即可進入WordPress配置頁面,您可以根據介面提示配置相關參數後,訪問WordPress。

常見問題

在Linux執行個體或容器中執行systemctl相關命令報錯

    相關文檔

    • Docker的更多使用方法,請參見Docker官方文檔

    • 使用Docker鏡像。

      阿里雲Container RegistryACR推出了製品中心,為容器開發人員免費提供了來源於阿里雲官方、龍蜥社區的安全可信容器基礎鏡像。部署Docker後,您可以直接使用製品中心的Docker容器鏡像來實現特定業務需求,例如部署應用、開發環境、作業系統、AI/巨量資料學習架構等。

    • Docker鏡像加速。

      您可以使用P2P加速功能提升鏡像拉取速度,減少應用部署時間。具體操作,請參見在其他容器環境中使用P2P加速

    • 您可以在Docker中配置CLI來管理您的阿里雲資源。具體操作,請參見在Docker中配置阿里雲CLI

    • 您還可以選擇使用阿里雲Container RegistryACR,管理和運行容器化應用程式。