• 【从0开始配置前后端项目】——Docker环境配置


    1. 准备一台纯净的服务器

    镜像:CentOS 7.9 64位
    CPU & 内存:2核2G
    系统盘:60GB
    峰值带宽:30Mbps
    流量包:600GB / 600GB
    在这里插入图片描述

    2. 安装Docker

    2.1 卸载旧的版本

    $ sudo yum remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-engine
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2.2 安装 Docker Engine-Community

    在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker。

    $ sudo yum install -y yum-utils  device-mapper-persistent-data  lvm2
    
    • 1

    使用以下命令来设置稳定的仓库。

    $ sudo yum-config-manager \
        --add-repo \
        https://download.docker.com/linux/centos/docker-ce.repo
    
    • 1
    • 2
    • 3

    安装 Docker Engine-Community

    $ sudo yum install docker-ce docker-ce-cli containerd.io
    
    • 1

    启动 Docker

    $ sudo systemctl start docker
    
    • 1

    通过运行 hello-world 映像来验证是否正确安装了 Docker Engine-Community 。

    $ sudo docker run hello-world
    
    • 1

    在这里插入图片描述
    安装成功!

    3. docker 部署一个flask项目

    需求:基于docker创建在ubuntu18.04系统上运行Flask网站
    流程:

    • 在centos7.9+安装docker
    • 基于docker
      • 获取基础镜像 ubuntu18.04
      • 基于基础镜像自定义镜像【ubuntu+python环境+代码】
      • 基于镜像创建容器+运行
    1. 获取镜像
     docker search ubuntu
    
    • 1
     docker pull ubuntu:18.04
    
    • 1
    1. 查看镜像
     docker images
    
    • 1
    1. 构建自定义镜像
      在docker宿主机centos7.9创建2个文件:Dockerfile、app.py
    #关Dockerfile
    # Base images 基础镜像
    FROM ubuntu:18.04
    
    #MAINTAINER 维护者信息
    maintainer wzybmw888@163.com
    
    #RUN 执行以下命令
    RUN apt update
    RUN apt install python3 python3-pip -y
    RUN pip3 install flask
    RUN mkdir -p /data/www
    
    #拷贝文件至工作目录
    COPY app.py /data/www/app.py
    
    #工作目录
    WORKDIR /data/www/
    
    #EXPOSE映射端口
    EXPOSE 80
    
    #容器启动时执行命令
    CMD ["python3","app.py"]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    app.py

    from flask import Flask
    
    app = Flask(__name__)
    
    @app.route("/index")
    def index():
    	return "欢迎光临红浪漫"
    	
    if __name__ =="__main__":
    	app.run(host="0.0.0.0",port=8000)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    命令构建自定义镜像(模板)

    docker build -t wupeiqi/web1:1.0 .  -f Dockerfile
    
    • 1

    基于镜像创建容器+运行

    docker run -p 80:8000 -d --name v123 wupeiqi/web1:1.0
    
    • 1

    -p 表示外部端口80访问内部端口8000, -d表示后台运行

    1. 补充
    docker ps -a 列出所有创建的容器
    docker ps 列出所有运行的容器
    docker stop xx1 xx2 停止正在运行的容器,xx1可以是容器id也可以是name
    docker rm xx1 xx2 删除容器
    
    • 1
    • 2
    • 3
    • 4
    1. Dockerfile指令
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      删除停止运行的容器
     docker rm $(docker ps -qa)
    
    • 1

    4. Docker运行mysql服务

    原始视频链接 https://www.bilibili.com/video/BV1wQ4y1Y7SE?p=16&spm_id_from=pageDriver&vd_source=7ac19d5113271a9a076e045912769b5e

    下载mysql8.x

    docker pull mysql:8.0.22
    
    • 1

    1启动mysql 开放端口映射(3306),使用-e设置root用户密码,后台运行-d,指定名称–name,总是运行

    docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d --name mysql01 --restart=always mysql:8.0.22 
    
    • 1

    新开一个窗口
    在这里插入图片描述

    1. 持久化宿主机
      -v /root/data:/var/lib/mysql
    docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d --name mysql01 --restart=always -v /root/data:/var/lib/mysql  mysql:8.0.22 
    
    • 1

    5. Docker运行redis服务

    docker pull redis:5.0.12
    
    • 1
    docker run -p 6379:6379 -d redis:5.0.12
    
    • 1
    docker exec -it 70e bash
    
    • 1

    启动redis 映射端口(6379) 后台启动-d 指定名称–name 总是启动 --restart=always

    docker run -p 6379:6379 -d --name redis01 --restart=always redis:5.0.12
    
    • 1

    redis支持内存数据持久化:
    1.rdb持久化: 快照 Redis服务器将某一时刻数据以快照文件形式写入到磁盘
    2.aof持久化: redis服务器将所有redis客户端的写操作以命今方式记录到日志文件中 AOF更加安全 everysec
    3.docker 启动redis 映射端口(6379) 后台启动-d 指定名–ame 总是启动 --restart=alnays 运行redis如何开启持久化
    注意: 只要开启了持久化,将持久化文件生成容器中/data/目录中

    docker run --name redis01 -d -p 6379:6379 --restart=always redis:5.0.12 redis-server --appendonly yes
    
    • 1

    4.docker启动redis 开放口 后台启动 指定名 总是启动 开启持化 映射数据文件外部

    docker run --name redis01 -d -p 6379:6379 --restart=always -v /root/redisdata:/data redis:5.0.12  redis-server --appendonly yes
    
    • 1

    6. Docker 配置Nginx服务

    https://www.jianshu.com/p/f2c6ad35fbb0

    7. Docker Compose

    在这里插入图片描述
    在这里插入图片描述

    sudo curl -L https://github.com/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m`  >  /usr/local/bin/docker-compose
    
    sudo chmod +x /usr/local/bin/docker-compose
    
    • 1
    • 2
    • 3
    #启动项目
    docker-compose 
    【-f  docker-compose.yml的路径】
    【-d 】(后台启动)
     up
    
    #关闭用docker-compose启动的所有容器
    docker-compose 
    【-f  docker-compose.yml的路径】
    down 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    docker-compose文件模板

    #docker-compose的版本
    version: "3.8"
    #一组容器
    services:
      #容器(自定义),默认生成的容器名为:项目名(docker-compose.yml所在目录的目录名)_容器_序号。
      container1:
          #镜像
        image: image1
        #通过Dockerfile构建镜像然后运行
        build: /dir/of/Dockerfile
        #容器名
        container_name: container-name 
        #端口映射(可多个) 宿主主机端口:容器端口 
        ports:
          - 80:80
        #数据卷(可多个) 宿主主机文件(必须已存在):容器文件
        volumes:
          - /path/in/host:/path/in/container
        #环境变量(可多个)
        environment:
          - var=value
        #覆盖容器启动时执行的命令
        command: new-command
        #先启动这些,再启动本身.
        depends_on:
          - 服务1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    Linux从入门到入土③(GCC、静态与动态链接库、Git、Make、Makefile)
    ES客户端(RestHighLevelClient、SpringDataElasticsearch 框架)使用指南
    Centos 7 Zabbix配置安装
    PLC学习笔记(三):PLC结构(2)
    戏说领域驱动设计(十五)——内核元素
    跟运维学 Linux - 01
    Kernel Memory 入门系列:Semantic Kernel 插件
    前端CSS学习,快速简单上手
    长连接的原理
    【SA8295P 源码分析 (一)】60 - QNX Host 如何新增 android_test 分区给 Android GVM 挂载使用
  • 原文地址:https://blog.csdn.net/m0_58598240/article/details/133577974