一、开发环境
- 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开机启动