1.容器化
容器化是将应用程序或服务、其依赖项及其配置(抽象化为部署清单文件)一起打包为容器映像的一种软件开发方法
特点:
- 一致的运行环境
- 可伸缩性
- 更方便的移植
- 隔离性
2.Docker
go语言开发的应用容器引擎, 基于容器化,沙箱机制的应用部署技术。可适用于自动化测试、打包,持续集成和发布应用程序等场景
Docker中三个重要概念
镜像(image):分片的(只读)文件系统,由Dockerfile创建独立、易扩展、更效率
容器(container):由Docker进程创建和管理的:文件系统 + 系统资源 + 网络配置 + 日志管理;docker是docker镜像的运行环境,所以容器的概念就比较好理解了
仓库(registry):用来远端存储docker镜像;版本控制、变更管理、为持续集成与快速部署提供便利
示意图:
tips:docker与虚拟机的比较?
3.Docker工作原理
Docker是容器化部署技术,它主要作用在于通过运行容器来实现应用部署,而容器基于镜像运行。仓库则管理镜像。
简单地说,就是将你的项目和依赖包(基础镜像)打成一个带有启动指令的项目镜像,然后在服务器创建一个容器,让镜像在容器内运行,从而实现项目的部署。
4.Docker安装
Docker的安装建议上阿里云【容器镜像服务】查找,很详尽
mac安装:https://docs.docker.com/docker-for-mac/install/
window安装:https://docs.docker.com/docker-for-windows/install/
这里因为我使用的是win7,所以安装的是docker toolbox,关于docker toolbox的安装,建议在阿里云的容器镜像服务中找,从安装到切换国内镜像,都妥了。
那如果已经创建了default怎么办?
//1.进入default
docker-machine ssh default
//2.更换地址
sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror=你的阿里云镜像加速地址 |g" /var/lib/boot2docker/profile
//3.退出
exit
//4.重启镜像源
docker-machine restart default
//5.验证是否已更换
docker info
更换成功示意图:
tips:如果你的电脑是win7且你的电脑登录账户不是系统管理员,那么要么换win10电脑,要么把电脑砸了,因为后面是无限的坑。。。
5.Docker常用命令
docker的命令都是以docker开头
容器创建:
- run:创建容器
- -p:映射宿主机的端口给镜像服务使用
- -v:挂载宿主机的文件目录到镜像里面
- -it:提供交互式的终端工具
- -d:是让镜像容器在后台去持续运行
- --name:指定容器的名称
- exec:进入到容器里面
示例:
//创建一个root密码为123456的mysql版本为5.7的端口映射到8000,且取名为 mysql5.7test01的容器 docker run -p 8000:3306 -e MYSQL_ROOT_PASSWORD=123456 -itd --name mysql5.7test01 mysql:5.7
容器操作:
- start:启动
- stop:停止
- restart:重启
- rm:删除已停止容器(未停止不可删除)
- ps:查看正在运行的容器的状态
- ps -a:-a参数来查看所有的已经运行的容器(无论是否停止)
示例:
docker ps -a docker rm mysql5.7test 或 //docker rm 容器id
镜像操作(镜像部分涉及到仓库的操作,仓库操作类比Git命令即可):
前提:docker hub上注册docker账号:Docker Hub
- login:仓库登录
- pull: 拉取镜像
- commit:提交镜像
- push:推送镜像
- 补充commit/pull/push:每个操作需要给一个标签:tag
- images:查看本地所有镜像
- rmi:删除本地镜像(删除前需要停止并删除依赖该镜像的容器,否则删除失败)
示例:
docker commit <container_id> <namespace>/<image_name>:tag docker pull/push <namespace>/<image_name>:tag //如: docker commit tr8yt89yty xxxx/mysql:5.7 //推送 docker push tomcat:8
6.Dockerfile
用于构建镜像
7.Docker-compose
定义一个多容器的应用
6,7因电脑原因暂停