文章目录
1. Docker简介
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
总的来说:Docker就是一个轻量级的虚拟机
2. 虚拟化部署环境的重要性
- 直接把程序安装或部署到linux上,很容易引发资源冲突
- 程序卸载不干净,导致无法安装和部署新程序
- 每次部署之前都要安装很多软件,修改复杂的配置文件
- 无法让服务器硬件资源实现多租户服务
- 增大了在linux上部署集群和分布式的难度
3. Vmware和Docker区别
4. CentOS下安装Docker
4.1 关闭selinux服务
-
selinux是CentOS系统的捆绑安全服务程序,但因为其安全策略太严格,所以建议关闭
-
修改:/etc/selinux/config 文件,设置SELINUX=disabled
-
保存,重启系统:reboot
4.2 安装Docker服务
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
5.2 腾讯配置Ducker加速器
- 执行命令: curl -sSL https://get.daocloud.io/daotools/st_mirror.sh | sh -s http://f1361db2.m.daocloud.io
5.3 阿里配置Docker加速器
-
登录阿里云服务器,搜索容器镜像服务,找到镜像中心下的镜像加速器
-
Docker版本在1.10.0以上的直接按照上面的步骤操作,然后重启Docker
-
地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
6. Docker环境的常用命令
6.1 Docker镜像和容器的关系
-
什么是Docker镜像
-
什么是Docker容器
6.2 常用的Docker命令
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版本
-
退出并停止容器: exit
-
查看容器状态: docker ps -a
-
启动容器: docker start demo1
-
暂停容器: docker pause demo1
-
恢复容器: docker unpause demo1
-
进入容器(容器必须是运行的状态): docker exec -it demo1 bash
- 退出容器: exit (注意:使用exec进入容器用exit退出只会退出容器,并不会关闭容器)
-
查看指定容器的详细信息: docker inspect demo1
- 注意: 这里关注docker给我们分配的ip地址
-
停止容器: docker stop demo1
-
删除容器(容器必须是停止的状态): docker rm demo1
7. 创建python容器的必要技术
7.1 Docker网络
7.1.1 Docker环境会给容器动态分配IP地址,所以我们要想办法让他绑定一个固定的IP
7.1.2 单独创建Docker内部网段
- 这里可以通过创建不同的网段来将不同的项目放入其中,如python项目就放到127.18.0.X中,java项目放到127.19.0.X中,这样可以便于查看时那个网段的项目挂掉了,能更清晰的定位
-
参数:
- –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
-
注意:在执行创建时可能会报错
这时候我们可以换ip地址,如改为:192.168.0.2,也就是说在创建的时候就将网段改为:
docker network create --subnet=192.168.0.0/16 mynet
-
-
查看Docker中存的网段
- docker network ls
7.2 容器端口映射
- 为什么要端口映射
- 参数: -p 宿主机端口:容器端口
- 执行:
- docker run -it --name=demo -p 9500:5000 python:3.8 bash
7.3 目录挂载
-
参数: …-v 宿主机上要映射的目录:容器中的目录 …
-
执行: docker run -it --name=demo /root/test:/root/project python:3.8 bash
- 执行完指令之后可以将centos下的/root/test/和docker容器中的/root/test/相关联起来,所以在容器里创建文件,centos下也会出现相应的文件,相应的在centos下创建,容器里也会生成相应的文件
8. 创建python容器
8.1 创建python容器
- 参数: 这里有个新参数 -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
8.2 为pip加速
9. 创建mysql容器
9.1 下载MySQL镜像
9.2 创建MySQL容器
-
参数: 注意: 这里不需要加上 --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特点
-
windows安装Pypy开发环境
11.2 下载Pypy镜像,创建Pypy容器
- 执行:
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