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 
- 
- 
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
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号