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
遠端連線Simple Application Server。具體操作,請參見遠端連線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進程管理
啟動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鏡像。
執行以下命令,拉取鏡像。本樣本以拉取阿里雲倉庫的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
在瀏覽器中輸入
https://輕量應用服務執行個體的公網IP
,即可進入WordPress配置頁面,您可以根據介面提示配置相關參數後,訪問WordPress。
常見問題
在Linux執行個體或容器中執行systemctl
相關命令報錯
相關文檔
Docker的更多使用方法,請參見Docker官方文檔。
使用Docker鏡像。
阿里雲Container RegistryACR推出了製品中心,為容器開發人員免費提供了來源於阿里雲官方、龍蜥社區的安全可信容器基礎鏡像。部署Docker後,您可以直接使用製品中心的Docker容器鏡像來實現特定業務需求,例如部署應用、開發環境、作業系統、AI/巨量資料學習架構等。
Docker鏡像加速。
您可以使用P2P加速功能提升鏡像拉取速度,減少應用部署時間。具體操作,請參見在其他容器環境中使用P2P加速。
您可以在Docker中配置CLI來管理您的阿里雲資源。具體操作,請參見在Docker中配置阿里雲CLI。
您還可以選擇使用阿里雲Container RegistryACR,管理和運行容器化應用程式。