docker详情及dockerfile nginx uwsgi 部署Djang项目

nginx介绍

image-20210413101827080

nginx安装及目录介绍

安装

yum install nginx
nginx -v 查看版本
service nginx stop 关闭
service nginx start 启动

目录

配置文件目录 cd /etc/nginx/
log日志目录  cd /var/log/nginx/
默认首页目录 cd /usr/share/nginx/html/

使用/配置

vim nginx.conf

远程连接

创建一个nginx文件夹 用vscode打开之后

借助插件 远程连接

image-20210413103246280

ctrl+shift+p 搜索sftp

image-20210413103448202

image-20210419141220088

docker

image-20210416085701884

开启
docker service start
systemctl restart docker.service
停止
docker service stop

docker 官网安装

卸载旧版本

较旧的Docker版本称为dockerdocker-engine。如果已安装这些程序,请卸载它们以及相关的依赖项。

 sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

安装yum-utils软件包(提供yum-config-manager 实用程序)并设置稳定的存储库。

sudo yum install -y yum-utils

社区版本

sudo yum install docker-ce docker-ce-cli containerd.io

企业版本
sudo yum install docker-ee docker-ee-cli containerd.io

docker镜像资源

查看容器
docker  ps
查看所有镜像
docker images
删除镜像
docker imi 名称
镜像资源重命名
docker tag  名称/版本  新名称/新版本
打包
docker save -o  镜像资源.tar  镜像资源
导入镜像资源
docker load -i  镜像资源.tar
历史
docker image history 镜像
搜索
docker serach 镜像
拉取
docker pull 镜像

docker 容器

运行容器
docker run -it --name 容器名  镜像资源 /bin/bash
查看正在运行的容器
docker container ls
docker ps
查看所有容器包括已经停止的
docker container ls --all
docker ps -a
退出当前的容器
exit
守护进程的方式运行容器不占用当前终端
docker run -dit --name 容器名  镜像资源 /bin/bash
进入后台正在运行的容器 - 退出后不停止运行 
docker exec -it  容器名 /bin/bash
退出
ctri + c \ exit
停止和启动容器
docker stop/start 容器名
删除容器
docker rm 名称
删除一个正在运行的容器/强制删除
docker rm -f 容器名
对容器的详情查看
docker container 容器名
状态信息内容
docker container stats 容器名
容器打包成一个新的镜像资源
docker commit 容器名 镜像资源

image-20210414162655457

部署的时候要先确定部署到那个系统上 完了 要把部署的系统的镜像资源拉取到本地

docker pull centos
运行
docker run -it --name 名字 centos /bin/bash
进入容器之后先要更新环境
yum update
在容器里面 安装过环境依赖之后项目代码也在里面 现在就要给他压缩成镜像资源
docker commit 容器名  镜像资源名
线上部署先将镜像资源打包成一个压缩包文件
docker save -o 镜像资源.tar
完了再把这个压缩包上传到远程服务器上,到了服务器上把这个镜像资源导入
docker load -i 镜像资源.tar  解压完就在服务器上生成了一个镜像资源
在以守护进程的方式启动这个镜像资源
docker run -dit --name 名 --network=host 镜像资源/bin/bash
进入容器
docker exec -it 名 /bin/bash
进入项目目录完了启动
如 python3 manages.py runserver
启动之后ip地址是127.0.0.1:8000  /docker容器运行的这个服务 /外网访问不到/只能在虚拟机上的浏览器访问
公网ip 绑定 
python3 manages.py runserver  公网ip

image-20210413134702288

dockerfile 镜像打包的一个工具

  1. 作用:docker部署的流程 以文件的形式写下来,去执行这个文件,代替我们实现docker部署操作
FROM  基于什么镜像
WORKDIR  指定镜像运行在哪个路径下
COPY  将宿主机的文件拷贝到镜像中去 ADD
RUN  运行shell语句
CMD   指定整个镜像启动运行的脚本 ENTRYPOINT
----------------------------
#启动运行基本系统
FROM unbutun
#安装环境
ADD ./requirements.txt /home
WORKDIR /home
RUN apt-get update && apt-get install python3-pip -y && pip3 install -r requirements.txt
# 导入项目文件
ADD ./项目名称 /home/项目名称
WORKDIR /home/项目名称
# 指定对外开放端口
EXPOSE 8001
# 运行项目
ENTRYPOINT uwsgi --ini uwsgi.ini

dockerfile 演示 - 自动化运维

创建一个文件夹
mkdir 文件夹
cd 到这个 文件中
打开文件 vim docerfile
在这个文件中写入你的脚本
------
#启动运行镜像资源
FROM unbutun
#安装环境
ADD ./requirements.txt /home
WORKDIR /home
RUN apt-get update && apt-get install python3-pip -y && pip3 install -r requirements.txt
# 导入项目文件
ADD ./项目名称 /home/项目名称
WORKDIR /home/项目名称
# 指定对外开放端口
EXPOSE 8001
# 运行项目
ENTRYPOINT uwsgi --ini uwsgi.ini
------
构建镜像
docker build -t 名 .  --你写一个点 他就知道你要从当前目录去找dockerfile 文件 执行里面的命令
执行完这个之后就会有这个镜像资源

docker build -t 名 . --你写一个点 他就知道你要从当前目录去找dockerfile 文件 执行里面的命令

image-20210414173940830

add和copy属性的使用

ADD -   解压后的  (直接帮你解压了)
COPY -  整个压缩包添加进来 (压缩包添加)

run和env的使用

RUN - 在启动的容器中执行安装指令
ENV - 指定变量

workdir的使用

指定工作目录。用 WORKDIR 指定的工作目录,会在构建镜像的每一层中都存在。(WORKDIR 指定的工作目录,必须是提前创建好的)。
docker build 构建镜像过程中的,每一个 RUN 命令都是新建的一层。只有通过 WORKDIR 创建的目录才会一直存在。

expose和entrypoint

EXPOSE
仅仅只是声明端口。
作用:
帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射。
在运行时使用随机端口映射时,也就是 docker run -P 时,会自动随机映射 EXPOSE 的端口。
ENTRYPOINT
类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序。
但是, 如果运行 docker run 时使用了 --entrypoint 选项,将覆盖 CMD 指令指定的程序。
优点:在执行 docker run 的时候可以指定 ENTRYPOINT 运行所需的参数。
注意:如果 Dockerfile 中如果存在多个 ENTRYPOINT 指令,仅最后一个生效

部署过程

  1. 构建dockerfilevim
#启动运行基本系统
FROM centos:7
#安装环境
ADD ./requirements.txt /home
WORKDIR /home
RUN yum -y update && yum  install python36 -y && yum install python3-pip -y && yum install -y pcre-devel openssl-devel && yum install -y python36-devel && yum install -y gcc && yum install -y gcc-c++ && pip3 install -i https://pypi.douban.com/simple/ --upgrade pip && pip3 install uWSGI==2.0.19.1 && pip3 install -i https://pypi.doubanio.com/simple/ -r requirements.txt
# 导入项目文件
ADD ./yulinapp /home/yulinapp
WORKDIR /home/yulinapp
# 指定对外开放端口
EXPOSE 8001
# 运行项目
ENTRYPOINT uwsgi --ini /home/yulinapp/uwsgi.ini

ENTRYPOINT uwsgi --ini /home/yulinapp/uwsgi.ini  --镜像里面uwsgi.ini绝对路径

  1. 把项目代码从桌面拉取到服务器上

    我用的是xshell的xftp命令put
    
  2. 配置uwsgi

    [uwsgi]
    #使用nginx连接时使用,Django程序所在服务器地址
    #socket=0.0.0.0:8002
    #直接做web服务器使用,Django程序所在服务器地址
    http=192.168.88.128:8003
    #项目目录
    chdir=/home/industrial_infomation_api
    #项目中wsgi.py文件的目录,相对于项目自录
    wsgi-file=industrial_infomation_api/wsgi.py
    #进程数
    processes=4
    #线程数
    threads=2
    #uwsgi服务器的角色
    master=True
    #存放进程编号的文件
    pidfile=uwsgi. pid
    #用户
    uid=root
    gid=root
    
    

    image-20210415133927906

安装依赖出现的问题

yum 安装的时候,别人会问你是否安装
所有yum的时候,都加上-y

04c108466068e15fd33c409cfce8b51

解决方法

主要是yum update 改成yum -y updat
yum 安装的时候,别人会问你是否安装
所有yum的时候,都加上-y
这个没有-y ,所有卡在那个地方了
yum的要加,pip的不用加啊

下来就是uwsgi安装不上的问题

image-20210416175345798

yum install -y pcre-devel openssl-devel 
yum install -y python36-devel
yum install -y gcc
yum install -y gcc-c++

安装完依赖会形成一个新的镜像启动这个镜像

image-20210415162500464

docker run -dit -p 8001:8001 镜像

docker run -dit -p (也可以加ip地址)8001:8001 --name 容器名 镜像名

docker run -P --name televr televr:v1  使用-P的时候,这时候就用上了之前Dockfile配置的需要暴露的端口,宿主机端口同样也是随机分配的
-p 小写是手动映射
-P 大写的是自动映射也就是随机分配端口

image-20210422093614418

image-20210420094327557

大佬公司镜像

image-20210416174851426

image-20210416174858336

image-20210416174917089

image-20210416174930316

dockerfile端口和uwsgi端口还有docker run端口

image-20210420085215754

docker run 主机端口:容器端口(dockerfile 抛出的端口)

nginx 监听的是容器端口

uwsgi_pass = uwsgi配置文件的ip:端口

/etc/nginx/uwsgi_params

给nginx配置一个9000端口 注意这里的localhost指的是我们容器的ip

image-20210420100528339

docker run --name nginx -p 80:80 -v /opt/tngx232/conf/nginx.conf:/etc/nginx/nginx.conf -v 
/home/docker-nginx/log:/var/log/nginx -v 
/home/docker-nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -d nginx

docker国内镜像源

# 创建或修改 /etc/docker/daemon.json 文件,修改为如下形式
{
    "registry-mirrors" : [
    "https://registry.docker-cn.com",
    "https://docker.mirrors.ustc.edu.cn",
    "http://hub-mirror.c.163.com",
    "https://cr.console.aliyun.com/"
  ]
}
# 重启docker服务使配置生效
$ systemctl restart docker.service
————————————————

Xshell连接虚拟机

没有ifconfig

执行命令安装

yum search ifconfig
yum install net-tools.x86_64

输入你的虚拟机用户名和密码就行了

image-20210415094855746

image-20210420105637538

docker run --name nginxx -p 80:80 -v /home/docker-nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/docker-nginx/log:/var/log/nginx -v /home/docker-nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -d nginx

#启动运行基本系统
FROM centos:7
#安装环境
ADD ./requirements.txt /home
WORKDIR /home
RUN yum -y update 
&& yum  install python36 -y 
&& yum install python3-pip -y 
&& yum install -y pcre-devel openssl-devel 
&& yum install -y python36-devel 
&& yum install -y gcc 
&& yum install -y gcc-c++ 
&& pip3 install -i https://pypi.douban.com/simple/ --upgrade pip 
&& pip3 install uWSGI==2.0.19.1 && pip3 install -i https://pypi.doubanio.com/simple/ -r requirements.txt
# 导入项目文件
ADD ./industrial_infomation_api /home/industrial_infomation_api
WORKDIR /home/industrial_infomation_api
# 指定对外开放端口
EXPOSE 8001
# 运行项目
ENTRYPOINT uwsgi --ini /home/industrial_infomation_api/uwsgi.ini

docker 工具

更新
sudo yum-config-manager \
 --add-repo \
 http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

命令
docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

image-20210423113136379

image-20210423113025759

image-20210423113232643

docker上启动nginx,并配置修改nginx的配置文件,nginx配置文件挂载目录操作 https://www.cnblogs.com/zgboy/p/14663154.html

posted @ 2021-04-23 14:09  赵刚、  阅读(516)  评论(0编辑  收藏  举报