开发经验|Docker初级入门

2023-11-05 11:42:05 浏览数 (1)

Docker核心技术

基础信息

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

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

核心技术

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

  • Cgroup:可以设置进程使用CPU,内存和IO资源使用的限额
  • Namespace:
    • Mount:让容器拥有整个文件系统”/”
    • UTS:让容器拥有自己的hostname
    • IPC:让容器拥有共享内存和信号量
    • PID:让容器有自己的PID进程
    • Network:让容器拥有自己的网络资源

DockerDocker

Docker的重要概念

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

镜像

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

容器

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

仓库

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

他们的关系可以用下面这张图来描述

流程逻辑流程逻辑

Docker的好处与用途

  • 可移植性 亚马逊EC2实例、谷歌的GCP实例、VirtualBox、Rackspace服务器等主机操作系统的平台上转移。
  • 持续部署 一个镜像多处使用,并保持环境的一致性。(多租户、开发生产化)
  • 环境标准化和版本控制 通过持续部署可看出环境的标准化,Docker可以像git仓库一样,管理不同的版本。
  • 隔离性 Docker可以确保应用程序与资源(CPU、内存、磁盘) 是隔离的,提高系统性能 。
  • 安全性 因为隔离性,所以每个程序只是用自己的资源。
  • 快速部署: 轻量虚拟化,无需重启系统,让容器的启动时间在秒级。

虚拟化(VM)和容器

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

虚拟化和轻量虚拟化的特性如下:

区别对比区别对比

Docker的相关语法与简单使用

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

Docker仓库语法

代码语言:javascript复制
docker search # 从registry仓库搜索镜像
docker pull # 从仓库下载镜像到本地
docker push # 将镜像放到仓库中
docker login # 登录到一个registry

Docker镜像语法

代码语言:javascript复制
docker images # 显示本地所有的镜像列表
docker build # 使用Dockerfile创建镜像(推荐)
docker rmi # 删除一个镜像
docker tag # 为镜像起一个别名

Dockerfile语法

代码语言:javascript复制
FROM  # 基础镜像base image 
RUN # 执行命令
ADD # 添加文件    
COPY # 拷贝文件
CMD # 执行命令     
EXPOSE # 暴露端口
WORKDIR # 指定工作路径  
MAINTAINER # 维护者
ENV # 设定环境变量 
VOLUME #逻辑卷挂载点

Docker下的开发部署流程

在使用Docker开发时,我们可以按照下面的步骤来进行操作,以满足我们在日常中的使用。install --> download --> image start --> image manager --> image build

开发流程开发流程

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

0 人点赞