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

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

相关推荐
小码编匠1 小时前
一款 C# 编写的神经网络计算图框架
后端·神经网络·c#
AskHarries1 小时前
Java字节码增强库ByteBuddy
java·后端
佳佳_1 小时前
Spring Boot 应用启动时打印配置类信息
spring boot·后端
许野平3 小时前
Rust: 利用 chrono 库实现日期和字符串互相转换
开发语言·后端·rust·字符串·转换·日期·chrono
BiteCode_咬一口代码4 小时前
信息泄露!默认密码的危害,记一次网络安全研究
后端
齐 飞4 小时前
MongoDB笔记01-概念与安装
前端·数据库·笔记·后端·mongodb
LunarCod4 小时前
WorkFlow源码剖析——Communicator之TCPServer(中)
后端·workflow·c/c++·网络框架·源码剖析·高性能高并发
码农派大星。5 小时前
Spring Boot 配置文件
java·spring boot·后端
杜杜的man6 小时前
【go从零单排】go中的结构体struct和method
开发语言·后端·golang
幼儿园老大*6 小时前
走进 Go 语言基础语法
开发语言·后端·学习·golang·go