1 基本知识
1.1 背景
- 解决开发和运维之间因为环境不同而导致的矛盾
- 集群环境下每台机器都需要部署相同的应用
1.2 简介
- 是一个开源的应用容器引擎
- 使用Go语言编写
- Docker依赖于Linux内核特性:所以只能运行Linux类型的系统,并且只能运行在Linux类型的系统
1.3 容器和虚拟机的区别
- 虚拟机:
我们传统的虚拟机需要模拟整台机器包括硬件,每台虚拟机都需要有自己的操作系统,虚拟机一旦被开启,预分配给他的资源将全部被占用。每一个虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统 - Docker:
容器技术是和我们的宿主机共享硬件资源及操作系统可以实现资源的动态分配。容器包含应用和其所有的依赖包,但是与其他容器共享内核。容器在宿主机操作系统中,在用户空间以分离的进程运行
特性 | 容器 | 虚拟机 |
---|
隔离级别 | 操作系统级 | 进程级 |
启动 | 秒级 | 分钟级 |
硬盘使用 | KB~MB | GB~TB |
性能 | 接近原生 | 弱于原生 |
系统支持量 | 单机支持上千个容器 | 一般是几十个 |
系统灵活性 | 只能运行Linux类型的系统 | Linux和Windows都可以 |
1.4 Docker服务器与客户端
- Docker是一个C/S架构程序,Docker客户端只要向Docker服务器或守护进程发出请求,服务器或者守护进程将完成所有的工作并返回结果
- 可以在同一台宿主机上运行Docker守护进程和客户端
也可以从本地的Docker客户端连接到运行在另一台宿主机上的远程Docker守护进程
1.5 Docker的镜像与容器
- 传统的镜像是一种文件存储形式,是冗余的一种类型,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本即为镜像
- Docker中的镜像好比一个类,容器好比一个对象,用户基于镜像来运行自己的容器
1.6 Registry(注册中心)
- Docker用Registry来保存用户构建的镜像。Registry分为公有和私有两种。Docker公司运营公共的Registry叫做Docker Hub,用户注册账号可以分享和保存自己的镜像。
1.7 K8S(Kubernetes)
- 中文意思是舵手或者导航员,Kubernetes这个单词很长,所以大家把中间8个字母缩写成8,就成了K8S
- K8S是一个容器集群管理系统,主要职责是容器编排——启动容器,自动化部署,扩展和管理容器应用,还有回收容器。简单来说有点像容器的保姆
- 除了K8S,还有Compose,Marathon,Swarm等容器管理平台
2 Docker安装
2.1 操作系统要求
- Docker官方建议在Ubuntu中安装,因为Docker是基于Ubuntu发布的
2.2 Docker命令
菜鸟教程
docker pull registry.cn-shanghai.aliyuncs.com/yhskc/dvwa
# 从仓库拉取镜像
docker run -d -p 0.0.0.0:81:80 registry.cn-shanghai.aliyuncs.com/yhskc/dvwa
# -d为后台执行,-p为端口映射,将容器的80端口映射到本地的81端口
docker start 容器id
docker container list -a # 查看container id
docker exec -it 容器id bash # 命令行深度调试指定容器
docker ps # 列出容器(加上-a显示包括未运行的)
docker rm 容器id # 删除容器