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




浙公网安备 33010602011771号