如果您需要在Elastic Compute Service上安裝Docker,可使用阿里雲提供的Docker鏡像源快速部署。本文主要介紹如何在 Linux系統的ECS中安裝Docker、使用Docker製作鏡像以及通過docker-compose更加高效地構建、部署和管理應用程式。
手動安裝Docker
準備工作
已建立一台基礎ECS執行個體,並滿足以下配置。如何建立ECS執行個體?
作業系統:Alibaba Cloud Linux 3 64位、Alibaba Cloud Linux 2 64位、CentOS 7.x 64位、CentOS 8.x 64位、Ubuntu 22/20、Debain 11/12
網路類型:Virtual Private Cloud
IP地址:執行個體已指派公網IP地址或綁定Elastic IP Address(EIP)。如何為ECS執行個體開通公網?
安全性群組:入方向允許存取80、22連接埠。具體操作,請參見如何添加安全性群組規則允許存取連接埠。
操作步驟
遠端連線ECS執行個體。
具體操作,請參見通過密碼或密鑰認證登入Linux執行個體。
安裝Docker。
Alibaba Cloud Linux 3
運行以下命令,添加docker-ce的dnf源。
sudo dnf config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
運行以下命令,安裝Alibaba Cloud Linux 3專用的dnf源相容外掛程式。
sudo dnf -y install dnf-plugin-releasever-adapter --repo alinux3-plus
運行以下命令,安裝Docker。
sudo dnf -y install docker-ce --nobest
說明安裝docker過程中如有問題請參考常見問題。
Alibaba Cloud Linux 2
運行以下命令,下載docker-ce的yum源。
sudo wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
運行以下命令,安裝Alibaba Cloud Linux 2專用的yum源相容外掛程式。
sudo yum install yum-plugin-releasever-adapter --disablerepo=* --enablerepo=plus
運行以下命令,安裝Docker。
sudo yum -y install docker-ce
CentOS 7.x
運行以下命令,下載docker-ce的yum源。
sudo wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
運行以下命令,安裝Docker。
sudo yum -y install docker-ce
CentOS 8.x
切換CentOS 8源地址。
CentOS 8作業系統版本結束了生命週期(EOL),按照社區規則,CentOS 8的源地址http://mirror.centos.org/centos/8/內容已移除,您在阿里雲上繼續使用預設配置的CentOS 8的源會發生報錯。如果您需要使用CentOS 8系統中的一些安裝包,則需要手動切換源地址。具體操作,請參見CentOS 8 EOL如何切換源?。
運行以下命令,安裝DNF。
sudo yum -y install dnf
運行以下命令,安裝Docker儲存驅動的依賴包。
sudo dnf install -y device-mapper-persistent-data lvm2
運行以下命令,添加穩定的Docker軟體源。S
sudo dnf config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
運行以下命令,檢查Docker軟體源是否已添加。
sudo dnf list docker-ce
出現如下圖所示回顯,表示Docker軟體源已添加。
運行以下命令安裝Docker。
sudo dnf install -y docker-ce --nobest
Ubuntu(18/22/20)/Debian(11/12)
更新軟體包列表。
sudo apt update
安裝Docker所需依賴包。
sudo apt-get -y install ca-certificates curl
建立
/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
將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
更新軟體包列表。
sudo apt update
安裝Docker。
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
查看
docker
版本資訊。docker -v
如下圖回顯資訊所示,表示Docker已安裝成功。
啟動Docker守護進程並設定開機自啟動。
執行以下命令,啟動Docker服務,並設定開機自啟動。
sudo systemctl start docker sudo systemctl enable docker
執行以下命令,查看Docker是否啟動。
sudo systemctl status docker
如下圖回顯所示,表示Docker已啟動。
Docker基本使用
下文只列出Docker基本用法,更詳細的操作命令,請參見Docker官網。
您可以通過如下命令管理Docker守護進程。
sudo systemctl start docker #運行Docker守護進程 sudo systemctl stop docker #停止Docker守護進程 sudo systemctl restart docker #重啟Docker守護進程 sudo systemctl enable docker #設定Docker開機自啟動 sudo systemctl status docker #查看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鏡像。
執行以下命令,拉取鏡像。本樣本以拉取阿里雲倉庫的Apache鏡像為例。
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
執行以下命令,建立並編輯Dockerfile檔案。
執行以下命令,建立並編輯Dockerfile檔案。
vim Dockerfile
按
i
進入編輯模式,並添加以下內容,改造原鏡像。#聲明基礎鏡像來源。 FROM aliweb:v1 #聲明鏡像擁有者。 MAINTAINER DTSTACK #RUN後面接容器運行前需要執行的命令,由於Dockerfile檔案不能超過127行,因此當命令較多時建議寫到指令碼中執行。 RUN mkdir /dtstact #開機啟動命令,此處最後一個命令需要是可在前台持續執行的命令,否則容器後台運行時會因為命令執行完而退出。 ENTRYPOINT ping www.aliyun.com
按
Esc
鍵,輸入:wq
並按Enter
鍵,儲存並退出Dockerfile檔案。
執行以下命令,基於基礎鏡像nginx構建新鏡像。
命令格式為
docker build -t <鏡像名稱>:<鏡像版本> .
,命令末尾的.
表示Dockerfile檔案的路徑,不能忽略。以構建新鏡像aliweb:v2為例,則命令為:sudo docker build -t aliweb:v2 .
執行以下命令,查看新鏡像是否構建成功。
sudo docker images
如下圖回顯所示,表示構建成功。
安裝並使用docker-compose
docker-compose是Docker官方提供的用於定義和運行多個Docker容器的開源容器編排工具,可以使用YAML檔案來配置應用程式需要的所有服務,然後使用docker-compose運行命令解析YAML檔案配置,建立並啟動設定檔中的所有Docker服務,具有營運成本低、部署效率高等優勢。
關於docker-compose的更多資訊,請參見Docker官網。
僅Python 3及以上版本支援docker-compose,並請確保已安裝pip。
安裝docker-compose
運行以下命令,安裝setuptools。
sudo pip3 install -U pip setuptools
運行以下命令,安裝docker-compose。
sudo pip3 install docker-compose
運行以下命令,驗證docker-compose是否安裝成功。
docker-compose --version
如果回顯返回docker-compose版本資訊,表示docker-compose已安裝成功。
使用docker-compose部署應用
下文以部署WordPress為例,介紹如何使用docker-compose部署應用。
建立並編輯docker-compose.yaml檔案。
運行以下命令,建立docker-compose.yaml檔案。
sudo vim docker-compose.yaml
按下
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:
按下
Esc
鍵,退出編輯模式,然後輸入:wq
儲存並退出。
執行以下命令,啟動應用。
sudo env "PATH=$PATH" docker-compose up -d
在瀏覽器中輸入
http://Elastic Compute Service執行個體的公網IP
,即可進入WordPress配置頁面,您可以根據介面提示配置相關參數後,訪問WordPress。
常見問題
Linux ECS執行個體或容器中執行systemctl相關命令報錯
Linux ECS執行個體中執行dnf config-manager命令報錯
Linux ECS執行個體中執行dnf install docker-ce命令報錯
相關文檔
Docker的更多使用方法,請參見Docker官方文檔。
使用Docker鏡像。
阿里雲Container RegistryACR推出了製品中心,為容器開發人員免費提供了來源於阿里雲官方、龍蜥社區的安全可信容器基礎鏡像。部署Docker後,您可以直接使用製品中心的Docker容器鏡像來實現特定業務需求,例如部署應用、開發環境、作業系統、AI/巨量資料學習架構等。
Docker鏡像加速。
您可以使用P2P加速功能提升鏡像拉取速度,減少應用部署時間。具體操作,請參見在其他容器環境中使用P2P加速。
您可以在Docker中配置CLI來管理您的阿里雲資源。具體操作,請參見在Docker中配置阿里雲CLI。
您還可以選擇使用阿里雲Container RegistryACR,管理和運行容器化應用程式。