Docker初级入门(一)

换了好几个主题,终于找到一个比较喜欢的。

我是落落落落落落,至于有几个字,酌情数一下,毕竟注册一个帐号不容易,重复的名称太多了。

董小姐是我目前的同事,暂且称呼她为小董,刚刚大学毕业两年有余。今日闲来无事,他说让我给她讲讲Docker相关的基础知识。择日不如撞日,今天就提笔来学习下基础知识。

Docker核心技术

基础信息

首先要说说Docker是什么工具,Docker是一个开源的应用容器引擎。好了,这里做下笔记,开源 - 应用容器 - 引擎

Docker能处理什么事情,先抛砖引玉。打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。好了,这里做下笔记,打包应用以及依赖包 - 到可移植的镜像中 - 发布到Linux或Windows操作系统

核心技术

了解Docker是什么工具,能做什么事情后,再来看下Docker的核心技术。

  • Cgroup:可以设置进程使用CPU,内存和IO资源使用的限额

  • Namespace:

    • Mount:让容器拥有整个文件系统"/"

    • UTS:让容器拥有自己的hostname

    • IPC:让容器拥有共享内存和信号量

    • PID:让容器有自己的PID进程

    • Network:让容器拥有自己的网络资源

Docker的重要概念

在使用前或者正在使用时,一些概念性的知识需要由外而内的深入理解。

镜像

镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。 镜像不包含任何动态数据,其内容在构建之后也不会被改变。

容器

容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

仓库

镜像需要一个集中的存储、分发镜像的服务,Docker Registry就是这样的服务。 一个Docker Registry中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。

Docker的好处与用途

  • 可移植性

    亚马逊EC2实例、谷歌的GCP实例、VirtualBox、Rackspace服务器等主机操作系统的平台上转移。

  • 持续部署

    一个镜像多处使用,并保持环境的一致性。(多租户、开发生产化)

  • 环境标准化和版本控制

    通过持续部署可看出环境的标准化,Docker可以像git仓库一样,管理不同的版本。

  • 隔离性

    Docker可以确保应用程序与资源(CPU、内存、磁盘) 是隔离的,提高系统性能 。

  • 安全性

    因为隔离性,所以每个程序只是用自己的资源。

  • 快速部署:

    轻量虚拟化,无需重启系统,让容器的启动时间在秒级。

虚拟化(VM)和容器

虚拟化在计算机方面通常是指计算元件在虚拟的基础上而不是真实的基础上运行。虚拟化和容器之间的区别可以看下这两张图。

Docker的相关语法与简单使用

作为基础知识,在我们没有界面操作时,可以先熟悉下一些常用的基础命令。

Docker仓库语法

shell 复制代码
docker search # 从registry仓库搜索镜像

docker pull # 从仓库下载镜像到本地

docker push # 将镜像放到仓库中

docker login # 登录到一个registry

Docker镜像语法

shell 复制代码
docker images # 显示本地所有的镜像列表

docker build # 使用Dockerfile创建镜像(推荐)

docker rmi # 删除一个镜像

docker tag # 为镜像起一个别名

Dockerfile语法

bash 复制代码
FROM  # 基础镜像base image 

RUN # 执行命令

ADD # 添加文件    

COPY # 拷贝文件

CMD # 执行命令     

EXPOSE # 暴露端口

WORKDIR # 指定工作路径  

MAINTAINER # 维护者

ENV # 设定环境变量 

VOLUME #逻辑卷挂载点                                

Docker下的开发部署流程

在使用Docker开发时,我们可以按照下面的步骤来进行操作,以满足我们在日常中的使用。

graph TD 安装Docker环境 --> 下载镜像 下载镜像 --> 容器的启动 容器的启动 --> 镜像/容器的管理 镜像/容器的管理 --> 项目镜像的构建

简单整理下就是 install --> download --> image start --> image manager --> image build

是不是手痒痒了,开始跃跃欲试了。好了,落落落落落落今天的基础小课程就到这里了。

相关推荐
孤雪心殇3 小时前
简单易懂,解析Go语言中的Map
开发语言·数据结构·后端·golang·go
小突突突5 小时前
模拟实现Java中的计时器
java·开发语言·后端·java-ee
web137656076435 小时前
Scala的宝藏库:探索常用的第三方库及其应用
开发语言·后端·scala
闲猫5 小时前
go 反射 interface{} 判断类型 获取值 设置值 指针才可以设置值
开发语言·后端·golang·反射
LUCIAZZZ6 小时前
EasyExcel快速入门
java·数据库·后端·mysql·spring·spring cloud·easyexcel
Asthenia04126 小时前
依托IOC容器提供的Bean生命周期,我们能在Bean中做些什么?又能测些什么?
后端
Ase5gqe6 小时前
Spring中的IOC详解
java·后端·spring
小万编程6 小时前
基于SpringBoot+Vue奖学金评比系统(高质量源码,可定制,提供文档,免费部署到本地)
java·spring boot·后端·毕业设计·计算机毕业设计·项目源码
南雨北斗7 小时前
ThinkPHP6控制器方法返回的 Content-Type类型
后端
CryptoRzz7 小时前
springboot接入方式对接股票数据源API接口
后端