python项目中的Docker的简单使用

1. Docker简介

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

总的来说:Docker就是一个轻量级的虚拟机

2. 虚拟化部署环境的重要性

  • 直接把程序安装或部署到linux上,很容易引发资源冲突
  • 程序卸载不干净,导致无法安装和部署新程序
  • 每次部署之前都要安装很多软件,修改复杂的配置文件
  • 无法让服务器硬件资源实现多租户服务
  • 增大了在linux上部署集群和分布式的难度

3. Vmware和Docker区别

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2nLMqE7Y-1600302453283)(C:\Users\Outlierwu\AppData\Roaming\Typora\typora-user-images\image-20200915224857105.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7AENlUhi-1600302453286)(C:\Users\Outlierwu\AppData\Roaming\Typora\typora-user-images\image-20200915225027023.png)]

4. CentOS下安装Docker

4.1 关闭selinux服务
  • selinux是CentOS系统的捆绑安全服务程序,但因为其安全策略太严格,所以建议关闭

  • 修改:/etc/selinux/config 文件,设置SELINUX=disabled

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V2UGuDNn-1600302453289)(C:\Users\Outlierwu\AppData\Roaming\Typora\typora-user-images\image-20200915230326952.png)]

  • 保存,重启系统:reboot

4.2 安装Docker服务

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mhnKH7rP-1600302453291)(C:\Users\Outlierwu\AppData\Roaming\Typora\typora-user-images\image-20200915230650458.png)]

4.3 阿里云centos安装docker
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装 Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start

注意:其他注意事项在下面的注释中
# 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,你可以通过以下方式开启。同理可以开启各种测试版本等。
# vim /etc/yum.repos.d/docker-ce.repo
#   将 [docker-ce-test] 下方的 enabled=0 修改为 enabled=1
#
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
#   Loading mirror speeds from cached hostfile
#   Loaded plugins: branch, fastestmirror, langpacks
#   docker-ce.x86_64            17.03.1.ce-1.el7.centos            docker-ce-stable
#   docker-ce.x86_64            17.03.1.ce-1.el7.centos            @docker-ce-stable
#   docker-ce.x86_64            17.03.0.ce-1.el7.centos            docker-ce-stable
#   Available Packages
# Step2 : 安装指定版本的Docker-CE: (VERSION 例如上面的 17.03.0.ce.1-1.el7.centos)
# sudo yum -y install docker-ce-[VERSION]
# 注意:在某些版本之后,docker-ce安装出现了其他依赖包,如果安装失败的话请关注错误信息。例如 docker-ce 17.03 之后,需要先安装 docker-ce-selinux。
# yum list docker-ce-selinux- --showduplicates | sort -r
# sudo yum -y install docker-ce-selinux-[VERSION]

# 通过经典网络、VPC网络内网安装时,用以下命令替换Step 2中的命令
# 经典网络:
# sudo yum-config-manager --add-repo http://mirrors.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo
# VPC网络:
# sudo yum-config-manager --add-repo http://mirrors.could.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo

5. DuckerHub

5.1 什么是DuckerHub

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ju9OSzBa-1600302453293)(C:\Users\Outlierwu\AppData\Roaming\Typora\typora-user-images\image-20200915231251181.png)]

5.2 腾讯配置Ducker加速器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C4YWcsso-1600302453295)(C:\Users\Outlierwu\AppData\Roaming\Typora\typora-user-images\image-20200915231638745.png)]

  • 执行命令: curl -sSL https://get.daocloud.io/daotools/st_mirror.sh | sh -s http://f1361db2.m.daocloud.io
5.3 阿里配置Docker加速器
  • 登录阿里云服务器,搜索容器镜像服务,找到镜像中心下的镜像加速器

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HwxJqLNK-1600302453295)(C:\Users\Outlierwu\AppData\Roaming\Typora\typora-user-images\image-20200916092631691.png)]

  • Docker版本在1.10.0以上的直接按照上面的步骤操作,然后重启Docker

  • 地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

6. Docker环境的常用命令

6.1 Docker镜像和容器的关系
  • 什么是Docker镜像

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xf2m3cNl-1600302453296)(C:\Users\Outlierwu\AppData\Roaming\Typora\typora-user-images\image-20200916100141617.png)]

  • 什么是Docker容器

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2GfjfnxO-1600302453297)(C:\Users\Outlierwu\AppData\Roaming\Typora\typora-user-images\image-20200916100303278.png)]

6.2 常用的Docker命令

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1omZSS6H-1600302453297)(C:\Users\Outlierwu\AppData\Roaming\Typora\typora-user-images\image-20200916100600420.png)]

6.3.1 镜像操作相关指令
  • 安装python镜像: docker pull python:3.7
  • 查看安装的镜像: docker images
  • 查看指定的镜像的详细信息: docker inspect python:3.7
  • 将指定的镜像打包成压缩包: docker save python:3.7 > /root/python.tar
  • 删除docker里的镜像: docker rmi python:3.7
  • 将压缩文件导入到dockers中,将其变成镜像: docker load < /root/python.tar
6.3.2 容器操作相关指令
  • 创建并运行容器: docker run -it --name=demo python:3.7 bash

    • -it:交换参数,bash:命令行
    • 可以在该环境下查看自己的python版本和pip版本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AZ4j7CoP-1600302453298)(C:\Users\Outlierwu\AppData\Roaming\Typora\typora-user-images\image-20200916104802620.png)]

  • 退出并停止容器: exit

  • 查看容器状态: docker ps -a

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6HJWGAq5-1600302453299)(C:\Users\Outlierwu\AppData\Roaming\Typora\typora-user-images\image-20200916105159342.png)]

  • 启动容器: docker start demo1

  • 暂停容器: docker pause demo1

  • 恢复容器: docker unpause demo1

  • 进入容器(容器必须是运行的状态): docker exec -it demo1 bash

    • 退出容器: exit (注意:使用exec进入容器用exit退出只会退出容器,并不会关闭容器)
  • 查看指定容器的详细信息: docker inspect demo1

    • 注意: 这里关注docker给我们分配的ip地址

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-duZgth0z-1600302453300)(C:\Users\Outlierwu\AppData\Roaming\Typora\typora-user-images\image-20200916110512802.png)]

  • 停止容器: docker stop demo1

  • 删除容器(容器必须是停止的状态): docker rm demo1

7. 创建python容器的必要技术

7.1 Docker网络
7.1.1 Docker环境会给容器动态分配IP地址,所以我们要想办法让他绑定一个固定的IP

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9Uc8Bx80-1600302453300)(C:\Users\Outlierwu\AppData\Roaming\Typora\typora-user-images\image-20200916112358288.png)]

7.1.2 单独创建Docker内部网段
  • 这里可以通过创建不同的网段来将不同的项目放入其中,如python项目就放到127.18.0.X中,java项目放到127.19.0.X中,这样可以便于查看时那个网段的项目挂掉了,能更清晰的定位

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2OwOx5ui-1600302453301)(C:\Users\Outlierwu\AppData\Roaming\Typora\typora-user-images\image-20200916114817338.png)]

  • 参数

    • –subnet=ip地址/16(65536个地址) 网段名
    • –net 网段名 --ip 指定的ip地址 容器名 bash
  • 创建网段

    • docker network create --subnet=127.18.0.0/16 mynet
  • 删除网段

    • docker network rm mynet
  • 指定IP地址

    • docker run -it --name=demo --net mynet --ip 127.18.0.2 python:3.7 bash

    • 注意:在执行创建时可能会报错

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tlUzbsRR-1600302453301)(C:\Users\Outlierwu\AppData\Roaming\Typora\typora-user-images\image-20200916143540119.png)]

      这时候我们可以换ip地址,如改为:192.168.0.2,也就是说在创建的时候就将网段改为:

      docker network create --subnet=192.168.0.0/16 mynet

  • 查看Docker中存的网段

    • docker network ls
7.2 容器端口映射
  • 为什么要端口映射

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E43f6rp5-1600302453302)(C:\Users\Outlierwu\AppData\Roaming\Typora\typora-user-images\image-20200916161852853.png)]

  • 参数: -p 宿主机端口:容器端口
  • 执行:
    • docker run -it --name=demo -p 9500:5000 python:3.8 bash

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZBbC6cyt-1600302453303)(C:\Users\Outlierwu\AppData\Roaming\Typora\typora-user-images\image-20200916162858313.png)]

7.3 目录挂载

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jr7PVIVI-1600302453303)(C:\Users\Outlierwu\AppData\Roaming\Typora\typora-user-images\image-20200916171224657.png)]

  • 参数: …-v 宿主机上要映射的目录:容器中的目录 …

  • 执行: docker run -it --name=demo /root/test:/root/project python:3.8 bash

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fltnv0fx-1600302453304)(C:\Users\Outlierwu\AppData\Roaming\Typora\typora-user-images\image-20200916172335514.png)]

    • 执行完指令之后可以将centos下的/root/test/和docker容器中的/root/test/相关联起来,所以在容器里创建文件,centos下也会出现相应的文件,相应的在centos下创建,容器里也会生成相应的文件

8. 创建python容器

8.1 创建python容器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-103bh5Ga-1600302453304)(C:\Users\Outlierwu\AppData\Roaming\Typora\typora-user-images\image-20200916192310471.png)]

  • 参数: 这里有个新参数 -d: 表示创建容器但不打开,只在后台运行,而且当在容器里执行exit也不会直接关闭容器,而是一直在后台运行
  • 执行:docker run -it -d --name=flaskdir -p 9500:5000 -v /root/project:/root/project --net python3.7net --ip 192.167.0.2 python:3. 7.8 bash
    - [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-03G3pVpo-1600303063736)(C:\Users\Outlierwu\AppData\Roaming\Typora\typora-user-images\image-20200916192948638.png)]
8.2 为pip加速

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VOj4uNIz-1600302453306)(C:\Users\Outlierwu\AppData\Roaming\Typora\typora-user-images\image-20200916193202500.png)]

9. 创建mysql容器

9.1 下载MySQL镜像

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MjMLufwB-1600302453306)(C:\Users\Outlierwu\AppData\Roaming\Typora\typora-user-images\image-20200916194808552.png)]

9.2 创建MySQL容器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uY2qv260-1600302453307)(C:\Users\Outlierwu\AppData\Roaming\Typora\typora-user-images\image-20200916200020201.png)]

  • 参数: 注意: 这里不需要加上 --it这个参数

  • 执行:docker run --name mydb -p 4306:3306 --net python3.7net --ip 192.167.0.3 -v /root/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWOR D=abc123456 -d mysql:8.0.18

9.3 创建数据表,写入记录

10. 项目部署

11. Pypy部署环境

11.1 介绍Pypy运行环境
  • Pypy SDK特点

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-luRS6ccw-1600313703604)(C:\Users\Outlierwu\AppData\Roaming\Typora\typora-user-images\image-20200917110610987.png)]

  • windows安装Pypy开发环境

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HtgOv6w9-1600313703613)(C:\Users\Outlierwu\AppData\Roaming\Typora\typora-user-images\image-20200917110728642.png)]

11.2 下载Pypy镜像,创建Pypy容器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vr6Wmrct-1600313703616)(C:\Users\Outlierwu\AppData\Roaming\Typora\typora-user-images\image-20200917110957482.png)]

  • 执行:
    • docker pull pypy:3.6-7.2.0
    • docker run -it -d --name=demo --net pypynet --ip 192.166.0.2 -p 9600:5000 -v /root/pypy:/root/pypy pypy:3.6-7.2.0 bash
      参考:https://www.bilibili.com/video/BV18J411n79W
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值