Docker 镜像原理
1.
Docker
镜像本质是什么?
•
是一个分层文件系统
2.
Docker
中一个
centos
镜像为什么只有
200MB
,而一个
centos
操作系统的
iso
文件要几个个
G
?
•
Centos
的
iso
镜像文件包含
bootfs
和
rootfs
,而
docker
的
centos
镜像复用操作系统的
bootfs
,只有
rootfs
和其他镜像层
3.
Docker
中一个
tomcat
镜像为什么
有
500MB
,而一个
tomcat
安装包只有
70
多
MB
?
•
由于
docker
中镜像是分层的,
tomcat
虽然只有
70
多
MB
,但他需要依赖于父镜像和基础镜像,所有整个对外暴露的
tomcat
镜像
大小
500
多
MB
Docker 镜像如何制作?
容器转为镜像
docker commit 容器id 镜像名称:版本号
外部挂在的目录文件,在容器转成镜像时候,不会吧挂载的文件,载入到镜像中。
在容器中创建的文件,在容器转成镜像时候,会吧挂载的文件载入到镜像中。
压缩镜像文件
docker save -o 压缩文件名称 镜像名称:版本号
解压镜像文件
docker load -i 压缩文件名称
Dockerfile 概念
•
Dockerfile
是一个文本文件
•
包含了一条条的指令
•
每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像
•
对于开发人员:可以为开发团队提供一个完全一致的开发环境
•
对于测试人员:可以直接拿开发时所构建的镜像或者通过
Dockerfile
文件构建一个新的镜像开始工作了
•
对于运维人员:在部署时,可以实现应用的无缝移植
案例:一
案例:二
服务编排
微服务架构的应用系统中一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,维护的工作量会很大。
•
要从
Dockerfile
build image
或者去
dockerhub
拉取
image
•
要创建多个
container
•
要管理这些
container
(启动停止删除
)
服务编排:按照一定的业务规则批量管理容器
服务编排工具:Docker Compose
Docker Compose是一个编排多容器分布式部署的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建,启动和停止。使用步骤:
1.
利用
Dockerfile
定义
运行
环境镜像
2.
使用
docker-compose.yml
定义
组成应用的各服务
3.
运行
docker
-compose up
启动
应用
安装Docker Compose
# Compose目前已经完全支持Linux、Mac OS和Windows,在我们安装Compose之前,需要先安装Docker。下面我 们以编译好的二进制包方式安装在Linux系统中。
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 设置文件可执行权限
chmod +x /usr/local/bin/docker-compose
# 查看版本信息
docker-compose -version
卸载Docker Compose
# 二进制包方式安装的,删除二进制文件即可
rm /usr/local/bin/docker-compose
使用docker compose编排nginx+springboot项目
1. 创建docker-compose目录
mkdir ~/docker-compose
cd ~/docker-compose
2. 编写 docker-compose.yml 文件
vim docker-compose.yml
version: '3'
services:
nginx:
image: nginx
ports:
- 80:80
links:
- app
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
app:
image: app
expose:
- "8080"
3. 创建./nginx/conf.d目录
mkdir -p ./nginx/conf.d
4. 在./nginx/conf.d目录下 study_nginx.conf文件
server {
listen 80;
access_log off;
location / {
proxy_pass http://app:8080;
}
}
5. 在~/docker-compose 目录下 使用docker-compose 启动容器
docker-compose up
6. 测试访问
http://ip/hello