• docker保持环境一致、镜像、容器、仓库、配置加速器、命令、dockerfile、部署django、编排工具、yaml、


    如何保持环境一致?

    pip3 freeze > requerment.txt

    pip install -r requerment.txt

    1.环境不一致

    2.配置文件不一致

    3.技术水平不一致,导致部署环境快慢不一致

    docker

    • 一处编译,到处运行

    • 对系统的消耗不是特别的多

    • 可以快速启动

    • 维护简单

    • 扩展容易

    镜像

    可以理解为操作系统的ios镜像

    容器

    启动后的镜像

    仓库

    镜像

    私有的仓库

    公共的仓库

    docker-ce 社区版本

    docker-ee 商业版本

    底层实现原理

    namespace

    cgroup

    linux 内核的技术

    安装

     cd /etc/yum.repos.d/
     wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
     yum install -y docker-ce

    配置加速器

     vim  /etc/docker/daemon.json
     {
         "registry-mirrors": [
             "https://1nj0zren.mirror.aliyuncs.com",
             "https://docker.mirrors.ustc.edu.cn",
             "http://f1361db2.m.daocloud.io",
             "https://registry.docker-cn.com"
        ]
     }
     systemctl daemon-reload
     systemctl restart docker
     systemctl start docker

    第一个命令

     docker run hello-world

    docker 搜索镜像

     docker search mysql
     NAME     DESCRIPTION                                   STARS       OFFICIAL            
     mysql   MySQL is a widely used, open-source relation…   8560               [OK]                
     name 名字
     DESCRIPTION 描述信息
     STARS 点赞数
     OFFICIAL 是否是官方提供
     docker pull centos

    查看镜像命令

     docker images

    docker 镜像是分层的

    docker pull mysql:5.7

    显示镜像的id

     docker images -q

    列出部分镜像

     docker images mysql

    删除镜像

     docker rmi name|id

    删除全部镜像

     docker rmi `docker images -q`

    启动容器

     docker run 镜像名称
     先查找本地是否存在镜像
     如果不存在则去下载镜像
     下载以后再启动
     容器启动以后在原来的镜像基础上在新建一层

    查看容器

     docker ps  #默认查询是运行中的容器
     -a 查看所有的
     -q 只查看容器的id

    容器执行命令

     docker run centos /bin/echo 'hongxu'

    启动并进入镜像

     docker run -ti centos /bin/bash
     -t 创建一个虚拟终端
     -i 将容器的标准输入保持打开
     退出 exit
     ctrl +d
     --name 指定名字
     -d 后台运行
     —P 将容器的端口暴露在宿主机的随机端口上
     -p 宿主机端口:容器端口
     -v 宿主机目录:容器指定目录(可以实现将宿主机目录挂载到容器中)

    制作自己的镜像

     docker commit -m "xinx" mycentos:laster

    导出镜像

     docker save -o mycentos.tar.gz mycentos
     docker save mycentos > mycentos.tar.gz

    删除容器

     docker rm # 默认只能删除未运行的容器
     -f 强制删除

    导入镜像

     docker load -i mycentos.tar.gz
     docker load < mycentos.tar.gz

    scp

    linux之间互相传递文件

    查看端口映射关系

     docker port 容器id或者容器名称

    关闭docker容器

     docker stop 容器id或者容器名称

    启动docker容器

     docker start  容器id或者容器名称

    获取容器的运行状态

     docker stats  容器id或者容器名称

    查看日志

     docker logs  容器id或者容器名称
     -f 实时输出

    进入容器

     docker exec -ti  容器id或者容器名称 /bin/bash

    移除所有停止状态的容器

     docker container prune

    dockerfile

     FROM mycentos  # 指定基础镜像
     COPY epel.repo /etc/yum.repos.d/ # 复制文件
     RUN yum install -y nginx  # 运行命令
     RUN mdkir /data/html
     RUN  echo 'mynginx' > /data/html/index.html
     COPY nginx.conf /etc/nginx/nginx.conf #只复制
     ADD # 复制并解压压缩包
     ENV  alex=alexdsb   # 设置环境变量
     ENV  wulaoban=dsb
     WORKDIR /data/html  # 设置工作目录,exec进入之后直接进入的目录
     EXPOSE 80 # 设置端口
     VOLUME # 指定容器的目录
     CMD /bin/bash -c systemctl start nginx # 运行命令
     RUN和CMD的区别
     RUN可以有多个
     CMD只能有一个,如果有多个到话,按最后一个算

    build

     docker build -t name:tag -f dockerfile .

    部署django

     FROM mycentos
     COPY epel.repo /etc/yum.repos.d/
     RUN yum install -y python36 python36-pip python36-devel
     RUN pip3 install django==1.11 pymysql django-multiselectfield -i https://pypi.douban.com/simple
     COPY supercrm /data/supercrm
     WORKDIR /data/supercrm
     RUN python3 manage.py migrate
     EXPOSE 8080
     CMD python3 manage.py runserver 0.0.0.0:8080

    远程仓库

     docker login   #登录dockerhub网站
     docker tag django wangfeng7399/django  # 修改名称
     docker push wangfeng7399/django # 上传

    本地仓库

    本地仓库默认使用是https

     docker run -p 5000:5000 -d -v /opt/data/registry:/var/lib/registry registry
     docker tag django 127.0.0.1:5000/django
     docker push 127.0.0.1:5000/django
     ## 检查
     curl 127.0.0.1:5000/v2/_catalog
     {"repositories":["django"]}

    解决办法:

     cat /etc/docker/daemon.json
     {
         "registry-mirrors": [
             "https://1nj0zren.mirror.aliyuncs.com",
             "https://docker.mirrors.ustc.edu.cn",
             "http://f1361db2.m.daocloud.io",
             "https://registry.docker-cn.com"
        ],
      "insecure-registries": [
         "192.168.21.128:5000"
      ]
     
     }
     docker tag django 192.168.21.128:5000/django
     docker push 192.168.21.128:5000/django

    docker 编排工具

    • swarm

    • mesos

    • k8s

    • kubernetes

    • compose 嫡系

     pip3 install docker-compose

    语法是基于yaml

    • 列表 -

    • 字典 key: value

    • 后缀名 yaml yml

    yaml文件

    默认是docker-compose.yml

    -f 文件

     version: '3.4'
     services:
      web:
      build:    #编译
        context: .
        dockerfile: flaskdf
      ports:   #指定端口
       - "15000:5000"
      redis:
        image: 'redis' # 指定镜像文件

    启动命令是

    docker-compose up

  • 相关阅读:
    Linux 通过sendmail 发邮件到外部邮箱
    基于Ruby的Watir-WebDriver自动化测试方案
    高性能Linux服务器构建实战笔记
    Unix Linux 通用vi命令,使用帮助手册【珍藏版】
    软件测试人员必备Linux命令(初、中、高级)
    网络七层知多少,学以致用
    手机终端高级测试工程师经验总结
    临别前夕,工作总结 于2014年8月13日 终稿
    基于ruby的watir自动化测试 笔记二
    高级软件测试工程师笔试题
  • 原文地址:https://www.cnblogs.com/zhang-da/p/12423739.html
Copyright © 2020-2023  润新知