Docker
- docker就是基于go语言开发的一种容器技术,基于linux内核,对进程封装隔离,属于操作系统层面的虚拟化技术,由于隔离的进程独立于宿主机和其他隔离的进程,所以叫做容器,创建和停止都十分迅速,资源需求远远低于虚拟机
- 为什么用docker,更快速的交付部署,高效的部署和扩容,更高的资源利用率,docker也叫码头工人,以前安装软件都是散装的,而使用docker都是使用的镜像,而镜像也可以理解为集装箱
-
-
类型一:在硬件上直接安装
-
类型二:vmware EXSI,kvm
-
-
-
docker
-
- Chroot 它是一个 UNIX 操作系统上的系统调用,用于将一个进程及其子进程的根目录改变到文件系统中的一个新位置,让这些进程只能访问到该目录
-
-
IPC进程直接通信,不能跨空间
-
UTS、Mount文件系统挂载点、IPC、PID、User用户、Network网络
-
使用linux内核级的namespaces名称空间实现隔离,内核版本都要在3.8以上
-
- CPU资源和内存分配
-
-
cpu在内核级使用cgroups进行比例型分配或者核数,内存使用空间分配
-
docker部署python项目
docker镜像构建
linux Container(容器)
-
-
lxc-create,template(就像脚本一样)
-
lxc帮我们创建空间,使用模板快速的构建
docker(镜像文件)
- docker因为镜像简化了容器的使用难度,docker一个容器中只运行一个进程
docker编排工具
-
-
machine+swarm+compose
-
mesos+marathon
-
kubernetes --> k8s
-
libcontainer -->runC
docker基础使用
docker是c/s,ce社区版,ee企业版
docker安装
- 安装docker源
- 下载清华docker-ce源
-
- 将下载下来的docker-ce.repo文件进行修改为清华源地址
- vim /etc/yum.repos.d/docker-ce.repo
-
# 替换命令 %s@https://download.docker.com/@https://mirrors.tuna.tsinghua.edu.cn/dockerce/@
- 查看镜像源是否加载命令: yum repolist
- 指定版本安装命令: yum install docker-ce-18.06.0.ce
- 将下载下来的docker-ce.repo文件进行修改为清华源地址
docker镜像加速
- 加速方式
- docker cn
- 阿里云加速
- 中国科技大学加速
- 配置加速
- mkdir /etc/docker
- vim /etc/docker/daemon.json
-
{ "registry-mirrors": ["https://registry.docker-cn.com"] }
#也可以添加两个 { "registry-mirrors": ["https://fvn7v6mj.mirror.aliyuncs.com","https://registry.docker-cn.com"] }
- 启动docker
- systemctl start docker.service
- 版本查看命令 : docker version
- 详情信息命令 : docker info
镜像管理
- 搜索镜像
- docker search nginx
- 下载镜像
- docker image pull nginx:1.14-alpine
- docker images 列出镜像
容器管理
docker-compose
yum install docker-compose
部署:docker_compose up -d
docker-compose.yml
# 查看docker网络
docker network ls
version: '3' # 指定docker——compose版本 services: postgres: # 服务名称,可以任意取值 image: rkproblem:1.0.0 # 镜像 container_name: rkproblem # 起名 容器名称,不是必填 restart: always # 启动方式 networks: -postgresql # 指定网络 ports: - "8080:8080" environment: # 环境变量 ** 重点 TZ:Asia/Shanghai POSTGRES_USER:postgres POSTGRES_PASSWORD:postgres_pass #depends_on: # 启动以来 ,测试用 等其他服务启动在启动 # -postgres
volumes: # 物理映射
- 物理机镜像地址:容器映射地址
volumes: data: networks: postgresql: external: name:postgresql