Docker

Docker

docker是容器化管理项目发布环境的方案

为什么使用Docker?(优点)

  • 1.简化项目发布步骤
  • 2.不同项目环境相互独立
  • 3.不需要额外安装其他基础库
  • 4.兼容性好,跨平台

Docker的目的

  • 集装箱:变革了人类整个生产流程,让货物全世界流通
  • Docker:变革了IT领域的软件交付方式,让IT之间鸿沟消失

目标:简化部署流程,提高生产力


Docker常用场景:

  • 构建DevOps流程,实现运维的自动化
  • 企业私有的PAAS平台,降低开发成本,提升效率
  • 企业级AppStore,统一的后端系统分发平台
  • 间歇式计算任务
  • 构建微服务架构

核心概念:

  • docker进程 docker daemon
  • 客户端 docker client
  • Register docker远程镜像源
    • 官网:docker hub
    • 国内镜像库
  • image 本地镜像
  • Containers 本地容器

docker 安装软件流程:docker pull 从远程镜像到本地镜像,通过镜像创建容器(运行的容器)

环境准备


  • 准备一台服务器或在Linux虚拟机中安装

  • 虚拟机联网

    • 联网方式:仅主机(主机和虚拟机之间可通信),桥连接,NAT(NAT和桥网段不同)
    • IP地址介绍

Docker安装

# 1.下载工具
sudo yum install -y yum-utils

# 2.配置yum docker官网仓库
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

# 3.安装 等待
sudo yum install docker-ce docker-ce-cli containerd.io 

# 4.启动
systemctl start 
docker systemctl enable docker

# 5. 测试
docker version  # 查看版本
docker info    # 查看运行信息
docker run hello-world   # 运行测试镜像

运行run之前,会自动检查本地是否有该容器,如果没有,自动pull远程镜像,build本地容器,再运行

# 其他指令
docker ps   # 查看所有正在运行的容器
docker images   # 查看

镜像管理

docker 镜像默认存储docker hub 远程镜像库中,可以配置国内镜像

配置地址:

拉取镜像:

docker pull 镜像名:版本

# 获取远程redis5.0镜像
docker pull redis:5.0
docker pull redis:latest  # 默认是最后一个版本
    
# 查询本地镜像
docker images

# 搜索镜像redis    search 镜像名
docker search redis

# 删除redis:latest镜像(删除镜像前先删容器)
docker rmi redis:latest
    

镜像加速:

#使用腾讯云dockerhub加速器适用于 Centos7 版本。
#修改 Docker 配置文件
vi /etc/sysconfig/docker
OPTIONS='--registry-mirror=https://mirror.ccs.tencentyun.com'
systemctl restart docker

容器Container

容器是镜像的一个运行实例

操作指令

# 创建
docker create -p 对外开放端口:容器内部软件端口 --name 容器名 参考镜像:镜像版本
docker create -p 16379:6379 --name redis redis:5.0
        
# 运行容器
docker run -p 对外开放端口:容器内部软件端口 --name 容器名 参考镜像:镜像版本
docker start 容器名或容器id

# 停止容器(2种)
docker stop 容器名或容器id
docker kill 容器名或容器id

# 查看正在运行的容器列表
docker ps

# 查看所有的本地容器
docker ps -a

# 删除容器
docker rm 容器名或容器id
docker rm -f 容器名或容器id   # 删除正在运行的容器
docker rm -f $(docker ps -aq)  # 删除所有容器

# 进入容器
docker exec -it 容器名 /bin/bash
# 退出容器
exit  或 Ctrl+d

# 查看容器运行日志
docker logs -f 容器名  # -f表示实时日志

Docker发布django项目

查看Docker安装信息

  • 查看Docker版本,命令: docekr version
  • 查看Docker运行信息,命名 docker info
  • 检测安装是否正确,命令 docker run hello-world

新建django项目web01

下面的目录结构是一个普通的django项目案例,项目名为web01,app名为product.

注意:项目根目录创建了dockerfile,pip.conf, requirements.txt 三个文件

  • 添加项目依赖
    首先我们需要把项目所依赖的包放到requirements.txt中:
PyMySQL==0.9.3
redis==3.2.1
request==2019.4.13
django==2.1.8
  • 编写Dockerfile文件
    这种镜像创建方式会根据项目中提供的requirements.txt文件自动pip安装依赖包
FROM python:3.6.6
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY pip.conf /root/.pip/pip.conf
COPY requirements.txt /usr/src/app/
RUN pip install -r /usr/src/app/requirements.txt
RUN rm -rf /usr/src/app
COPY . /usr/src/app
CMD [ "python", "./manage.py", "runserver", "0.0.0.0:8000"]

说明:
FROM python3.6.6 指定Python版本
"0.0.0.0:8000" 指定开启容器中8000端口,下面开启容器就要映射到这个端口

  • pip.conf
    这里是为了使用镜像 pip install 相关依赖,速度快的起飞

  • requirements.txt

PyMySQL==0.9.3
redis==3.2.1
request==2019.4.13
django==2.1.8

没有必要逐一写依赖,使用如下命令可把本地虚拟环境中的所有包生成到项目中

pip freeze > requirements.txt
  • 项目上传到云服务器(centos7)
    不用再自己手动创建虚拟环境,因为docker会自动去下载依赖.

  • 构建镜像(默认从docker国外的远程库下载,速度很慢!一定先替换为国内的阿里软件源! 替换步骤参考文章最后!)

# 注意后面的 . 不能省略
docker build -t my-django-web01:1.0 .
    
# 创建过程中会自动下载python3.6.6, 和所有依赖库,而且速度非常快

  • 开启容器
# 或者 http://120.79.197.130:8000(端口号随意映射,但要注意开启对应安全组)
docker run -it --rm -p 8000:8000 --name djweb01 my-django-web01:1.0

posted @ 2020-11-04 16:23  摘掉星星  阅读(85)  评论(0)    收藏  举报