docker总结
1,docker 的Linux基本概念:docker是一个轻量级的虚拟机,也是实现容器化技术的一个应用工具,他是基于Linux内核的,可以对进程实现一个隔离,属于操作系统层面的虚拟化技术,
2,由于隔离的进程独立于宿主和其他进程,又被称之为容器,
3,集装箱的意思是:对于不规整的货物,通过统一的标准进行包装,在docker中代表,对于不同的应用程序使用docker的标准来实现构建,运输集装箱的鲸鱼则代表操作系统,
4,docker的优势
4.1,资源占用小,因为容器不需要进行硬件虚拟,也不需要完整的操作系统带来的二外资源开销,是docker的对于资源的利用率更高,比传统的的虚拟机技术要更加的高效,内存消耗也更少
4.2,启动速度更快,传统的虚拟机启动需要时间很多,但是docker容器技术直接运行在,宿主机的内核上,不需要启动完整的操作系统,因此可以做到秒级甚至是毫秒级的启动,
4.3,迁移更轻松,因为docker确保了执行环境的一致性,使得应用在迁移的时候非常的容易,可以在很多平台上运行,物理机,虚拟机,公有云,或者私有云
4.4,维护和扩展更加的轻松,docker是分层存储和镜像技术,让应用重复部分的复用更加的容易,也让应用的维护更加的简单,通过基础镜像进一步扩展镜像,也变的十分简单,有很多的高质量的官网镜像都是直接可以下载下来进行使用的。大大降低了镜像制作的一个成本。
4.5,运行环境的一致性,因为开发测试和生产的往往存在不一样的地方,一些bug在开发环境没有,在生产就有,而docker提供了一个除了内核以外,完整的运行环境,确保了应用环境的一致性。(这就是为什么可以做不同平台迁移的一个问题)
4.6,持续的交付和部署,docker可以通过镜像实现持续的交付和部署,我们只需要通过dockerfile去编写,构建镜像的一个脚本就可以了
docker中的核心组件
镜像是一个特殊的文件系统,是一个Linux系统,一个镜像可以包含一个完成的操作系统环境,
镜像可以用来创建docker容器,
容器是镜像运行的实体,是一个运行实例,他可以被启动,开始停止和删除,每个容器都是隔离,主要保证一个隔离性
仓库是一个集中存放镜像的地方,很多人会把仓库和仓库注册服务器,最大的公开库是dockerhunb
将jar包copy到linux,新建Dockerfile文件
-rw-r--r-- 1 root root 52209844 Mar 25 22:55 data-sharing-0.0.1-SNAPSHOT.jar
-rwxrwxrwx 1 root root 227 Mar 25 22:57 Dockerfile
[root@localhost mnt]# pwd
/mnt
Dockerfile内容
# 指定基础镜像
FROM java:8-alpine
# 拷贝本地jar文件复制到镜像中的/tmp/app.jar路径下
COPY ./data-sharing-0.0.1-SNAPSHOT.jar /tmp/app.jar
# 暴露端口
EXPOSE 8896
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
从构建镜像到运行容器
# 自定义构建镜像
docker build -t data-sharing:0.0.1-SNAPSHOT
.指Dockerfile目录
-t指-tar data-sharing:0.0.1-SNAPSHOT指jar名称和版本号
# 查看镜像
docker images
# 运行容器
docker run --name data-sharing -p 8897:8896 -d data-sharing:0.0.1-SNAPSHOT
# 查看容器状态
docker ps -a