五分钟技术趣谈 | 浅谈Docker

开源
随着互联网的极速发展,应用程序的功能越来越丰富,而需要迭代的速度要求也越来越高,为实现这些目标,应用的开发逐渐趋向服务化甚至微服务化。每个应用程序都有其对应依赖的操作系统或者其他程序,而在将应用程序细分为不同的微服务或者是其他形式的微小应用模块后,解决这种依赖问题会愈发显得棘手,有的应用运行环境特别复杂...

Part 01 Docker概述

Docker是一个开源的应用容器引擎,基于Go语言并遵从 Apache2.0协议开源。Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。

Docker的架构如下:

Part 02 特性

➤ 文件系统隔离

每个进程容器运行在一个完全独立的根文件系统里。

➤ 资源隔离

系统资源,像CPU和内存等可以分配到不同的容器中,使用cgroup。

➤ 网络隔离

每个进程容器运行在自己的网路空间,虚拟接口和IP地址。

➤ 日志记录

Docker将收集到和记录的每个进程容器的标准流,用于实时检索或者批量检索。

➤ 变更管理

容器文件系统的变更可以提交到新的镜像中,并可重复使用以创建更多的容器。无需使用模板或者手动配置。

➤ 交互式shell

Docker可以分配一个虚拟终端并且关联到任何容器的标准输出上,例如运行一个一次性交互shell。

Part 03 Docker与虚拟机的区别

Docker可以让一个应用在任何操作系统中非常方便的运行。而以前我们接触的虚拟机,也能在一个操作系统中,运行另外一个操作系统,保护系统中的任何应用。

两者有什么差异呢?

虚拟机(virtual machine)是在操作系统中模拟硬件设备,然后运行另一个操作系统,比如在 Windows 系统里面运行 Ubuntu 系统,这样就可以运行任意的Ubuntu应用了。

Docker仅仅是封装函数库,并没有模拟完整的操作系统,如图:

对比来看:

图片图片

Part 04 Docker部署java web应用

4.1 下载系统镜像(以CentOS为例)

使用命令:docker images查看下载情况

4.2 根据该镜像创建容器

查看已经运行的容器列表命令:docker ps

查看所有容器,然后使用容器启动命令,运行刚才创建的centos容器:docker start stupefied_perlman

4.3 在容器中添加相应依赖

容器创建好以后,需要进入到容器中添加相关依赖,进入容器的命令如下:

4.4 将已经部署了环境依赖的容器提交为新镜像

4.5 基于新镜像运行javaweb容器

责任编辑:庞桂玉 来源: 移动Labs
相关推荐

2023-04-15 20:25:23

微前端

2023-07-02 16:34:06

GPU虚拟化深度学习

2024-12-18 14:10:33

2023-09-02 20:22:42

自动化测试软件开发

2023-09-03 19:06:42

2023-08-06 07:05:25

Android优化

2023-07-16 18:49:42

HTTP网络

2023-07-02 16:17:31

VR虚拟现实

2023-07-02 16:09:57

人工智能人脸识别

2023-09-12 07:10:13

Nacos架构

2023-07-31 08:55:15

AI技术网络暴力

2023-08-07 06:39:03

网络传输

2023-08-29 06:50:01

Javamaven

2023-07-12 15:50:29

机器学习人工智能

2023-07-12 16:03:37

Android开发架构

2023-08-15 14:46:03

2023-08-06 07:00:59

Openstack网络

2023-09-17 17:51:43

Android 14

2023-07-16 18:42:18

2023-08-06 06:55:29

数字可视化物联网
点赞
收藏

51CTO技术栈公众号