一、開發環境
- CentOs==7
- Docker==20.10.3
- Docker-compose==1.25.5
- Python==3.8
- Django==3.1.0
- Nginx==1.18.0
- Mysql==5.7
二、為什么要用Docker
一般方式部署
以部署Django+Nginx+Mysql
項目為例,我們在不使用容器技術(例如Docker)部署時,需要分別在服務器上安裝Python
、Nginx
和Mysql
,需要執行十幾條命令。而如果下次使用的服務器系統更換,比如從Linux換成Windows,則上次使用的命令就不管用了,不同系統使用的命令不一樣,我們需要重新去學習部署。如果我們要同時部署多臺服務器,并且系統環境不一樣時,那么我們的工作量就會變得更大并且繁瑣。
使用Docker部署
Docker是一個開源的應用容器引擎,它會將項目與項目運行所需要的環境一起打包進一個容器中,這個容器與外界隔絕,不管外界是Linux還是Windows環境,項目都可以在容器中從容運行。所以我們只需要學習如何在不同系統環境中使用Docker構建容器即可。
三、部署前準備
本次項目部署使用的服務器環境是Centos7
,我們先在服務器上安裝
- Docker
- Docker-compose
其中Docker-compose是Docker官方推出的用于編排、運行多個容器的工具,因為在項目中我們需要用到Django
、Nginx
和Mysql
三個組件。雖然可以將三個組件安裝到一個容器中,但是為了方便復用,更推薦將三個組件分別安裝進一個獨立的容器中,單獨運行。
安裝docker
1、卸載舊版本的docker和相關依賴項
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2、安裝依賴
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
3、配置穩定的repositories(此處是使用的官方源地址,如果慢的話,可以更換為國內地址,例如阿里云的地址:http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo )
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo"
4、安裝docker,安裝完成后,可以通過 docker version 命令查看docker信息
sudo yum install docker-ce docker-ce-cli containerd.io
此處附上docker官方的安裝文檔: https://docs.docker.com/engine/install/centos/
安裝docker-compose
1、安裝docker-compose
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
2、給docker-compose執行權限,可以通過 docker-compose --version 命令查看docker-compose信息
sudo chmod +x /usr/local/bin/docker-compose
此處附上docker-compose官方的安裝文檔: https://docs.docker.com/compose/install/
四、總結
本章內容簡單介紹了使用docker部署項目的優勢以及如何在Linux環境下安裝Docker。有興趣的同學可以關注公眾號「碼途有道」。下章內容將具體講解如何使用docker構建容器來部署項目。最后附上常用的Docker操作命令:
-
docker ps -a
:查看所有的容器狀態 -
docker exec -it <容器名/容器ID> /bin/bash
:進入正在運行的容器中 -
docker stop <容器名/容器ID>
:停止正在運行的容器 -
docker rm <容器名/容器ID>
:刪除容器(只能刪除停止運行的容器) -
docker rmi <鏡像名>
:刪除鏡像 -
systemctl start docker.service
:啟動Docker服務 -
systemctl stop docker.service
:停止Docker服務 -
systemctl restart docker.service
:重啟Docker服務 -
systemctl enable docker.service
:將Docker服務配置為開機自啟動 -
systemctl is-enabled docker.service
:檢查Docker服務是否開機自啟動 -
systemctl disable docker.service
:禁止Docker開機啟動