docker是一种容器技术,用来创造独立的软件容器,属于操作系统的虚拟化技术,隔离的进程独立于宿主和其他隔离的进程。,虚拟机:需要有必要的二进制库和完整的操作系统,并且占据所有预分配的资源。,docker容器:与宿主共享操作系统,可以实现资源的动态分配,在用户空间以分离的进程运行,镜像是文件,容器是进程;他们之间的关系像是类和实例化对象的关系,一个类可以有多个实例化对象。而仓库是一个其中的存储、分发镜像的服务。
docker pull
是从仓库下载docker镜像到本地,
docker run
是创建一个容器并运行一个命令,
docker exec -it
是在运行的容器中执行命令,根据自己的系统选择安装方式docker安装,1.简单尝试:使用
docker pull nginx:latest
下载一个最新的nginx镜像。,2.使用命令
docker run --name my-nginx -p 80:80 -d nginx:latest
,创建一个容器,命令为my-nginx,
-d
表示后台运行并返回容器的ID,
-p
将端口指定到宿主的80端口。打开浏览器访问80端口,
,3.使用命令
docker exec -it my-nginx bash
开启一个交互模式终端,其中第一步不是必须,在执行
docker run
命令时找不到镜像时会自动从仓库拉取,尝试部署最基本的django项目,
创建django项目,命令行输入
django-admin startproject mysite
,进入创建的django文件夹中我们可以看见整个项目结构,
,此时我需要在项目根目录下创建
Dockerfile
文件,该文件用于生成docker镜像,内容如下,继续在项目根目录下创建pip.conf文件,用于修改pip镜像源,最后创建
requirements.txt
文件,因为只需要django,只需要安装django即可,项目内容设置完后,在项目根目录输入命令
docker build -t django_docker_img:v1 .
创建镜像,使用命令
docker images
查看镜像,可以看见刚刚创建的镜像,
,在
Dockerfile
中第一行是
from python:3.7
,也就是在创建过程中会从docker仓库中拉取
python:3.7
的镜像,速度过慢的话请修改你的docker镜像源,可以直接在docker界面处修改,
https://b2bk1nge.mirror.aliyuncs.com
,
,输入命令
docker run -it -d -p 80:8000 --name mysite django_docker_img:v1
创建并运行容器,此命名将该容器映射到本地80端口,使用
docker ps
查看运行情况。然后使用命令
docker exec -it mysite bash
进入容器内部,会发现此刻处于
Dockerfile
中设置的工作目录,该目录下内容即为项目文件内容,pip已安装
requirement.txt
中的依赖,
,最后在容器的bash中执行下面命令,完成数据库迁移和运行django项目,此时在浏览器中访问
http://127.0.0.1/
可以看到运行的django项目,
,本篇文章主要是尝试性的使用docker来部署项目,学习过程中也是踩了一些坑,目前来看使用docker安装镜像很方便,之前在安装需要的软件时,往往会遇上各种各样的小bug,而使用docker后只需要简单地拉取镜像创建容器,两行命令解决所有烦恼。