Dockerfile
程序员可以通过Dockerfile制作镜像,在linux中启动变成容器运行
比如:将springboot生成的jar包通过Dockerfile制作成镜像 在inux中启动运行
springboot:jar包—》Dockerfile—》镜像—》容器(springboot项目的运行环境)
Docker 镜像原理
镜像原理
Dockerfile概念及作用
举例:配置一个
**需求:**定义dockerfile,发布springboot项目
实现步骤:
(1) 上传jar包
将hello项目打成一个可执行的jar包 hello-1.0-SNAPSHOT.jar,把这个jar包上传到linux中
(2) 创建dockerfile文件,文件名my_hello
#1.定义父镜像(定义当前工程依赖的环境):
FROM java:8
#2.定义作者信息(可以省略不写):
MAINTAINER itheima
#3.将jar包添加到容器(将jar包存入镜像中):
ADD hello-1.0-SNAPSHOT.jar hello.jar
#4.指定这个容器对外暴露的端口号
EXPOSE 8888
#5.定义容器启动执行的命令: 当通过此镜像启动容器的时候,执行的命令
ENTRYPOINT [“java”,“-jar”,“/hello.jar”]
(3) 通过dockerfile构建镜像
#通过dockerfile构建镜像:执行这个名称是my_hello的dockerfile文件 -f: from -t: to
docker build -f my_hello -t my_hello_image .
#最后一个点不要忽略
(4) 启动容器
#创建启动容器
docker run -id --name=自定义名称 -p 端口 镜像名称
Docker服务编排
服务编排:批量管理所有容器进行统一启动/统一停止且统一删除
服务编排
微服务架构的应用系统中一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,维护的工作量会很大。
- 要从Dockerfile build image 或者去dockerhub拉取image
- 要创建多个container
- 要管理这些container(启动停止删除)
**服务编排:**按照一定的业务规则批量管理容器
Docker Compose(服务编排) 概述
Docker Compose是一个编排多容器分布式部署的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建,启动和停止。使用步骤:
- 利用 Dockerfile 定义运行环境镜像
- 使用 docker-compose.yml 定义组成应用的各服务
- 运行 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
# 查看版本信息
docker-compose -version
# 设置文件可执行权限
chmod +x /usr/local/bin/docker-compose
卸载Docker Compose
# 二进制包方式安装的,删除二进制文件即可
rm /usr/local/bin/docker-compose
举例:创建一个
通过docker compose进行容器批量管理:一次性启动三个容器(nginx,tomcat,redis)
步骤:
(1) 定义一个Docker Compose配置文件
- docker-compose.yml
- 定义需要的容器
- 每个容器的配置
(2) 进入docker-compose.yml所在的目执行docker-compose up -d 命令批量执行
开始操作:
(1) 创建docker-compose目录
mkdir ~/docker-compose
cd ~/docker-compose
(2) 定义docker-compose.yml 文件
vi docker-compose.yml 内容如下
version: '3'
services:
nginx:
container_name: my_nginx
image: nginx
ports:
- 80:80
tomcat:
container_name: my_tomcat
image: tomcat:8.5
ports:
- 8080:8080
redis:
container_name: my_redis
image: redis
ports:
- 6379:6379
(3) 启动容器
在执行命令之前应该把上面的那些容器关闭并且删除
执行此命令的时候,需要和配置文件再同一个目录下
docker-compose up -d
关闭容器并且删除
docker-compose down
docker与虚拟机比较
不同:
-
软件在虚拟机中 软件在docker中
-
容器虚拟化的是操作系统,虚拟机虚拟化的是硬件。
-
传统虚拟机可以运行不同的操作系统,容器只能运行同一类型操作系统
Docker | 虚拟机 | |
---|---|---|
启动速度 | 秒级 | 分钟级 |
硬盘使用 | 一般为MB | 一般为G |
CPU/内存消耗 | 少 | 多 |
支持数量 | 上百个 | 十几个 |
可视化管理 | 不成熟 | 成熟 |