docker学习笔记

容器是个什么东西

容器是一种封装,他可以使应用运行环境,与外界隔离;应用的运行不在依赖本地的环境**(大多数情况)**。本质上,它是一个特殊的进程。除了应用程序意外,还包括了运行程序所需要的细节以及相关依赖。
ps:对于依赖内核的应用,可能会有一些奇怪的问题

容器如何实现隔离

两个主要的机制:

Linux命名空间

他可以使每个进程只能看到他自己的系统试图,如:文件,进程,网络接口,主机名等;
任意一个进程可以在一个命名空间运行,每个命名空间可以隔离特定的资源,每个命名空间内的资源对其他容器来说是不可见的。

Linux控制组

它可以对进行使用的资源进行限制,如cpu,内存,带宽等;
这种管理限制可以帮助进程不会占用过多的资源。

Docker

Docker是一个服务平台,是一个可以让容器再不同系统环境之间移植的一个服务 是一个使容器能在不同机器之间移植的系统。 它提供了相应的打包流程,简化了应用和库之间的依赖,这个包可以被用来移植到安装了Docker服务的机器上。

组成

1. 镜像

Docker镜像里包含了你打包的应用程序及其所依赖的环境。 它包含
应用程序可用的文件系统和其他元数据, 如镜像运行时的可执行文件路径。

2. 镜像仓库

Docker镜像仓库用于存放Docker镜像, 打包完成的镜像可以存放在本地,也可以存放在网络上公开的仓库,或者私人仓库,公开的仓库允许所有人从中拉去镜像,私人的仅允许授权的人和机器拉取。

3. 容器

它基于Docker镜像被创建,一个运行在主机上的进程,但是它和所有进程都是隔离的,也是资源受限的,只能访问被分配的系统资源。

镜像分层

一个Docker镜像是分层的,不同的镜像可能有相同的层,这样可以增加传输效率,分发高效,层的设计也有主要减少镜像的存储空间,每个相同的层仅仅被存储一次,当基于相同的层构建两个不同的容器时,他们会读取相同的文件。
也许这里会说,如果一个容器修改了某些文件,另一个是否可以看见。然而这个并不能做到,因为容器的镜像层是被设计成了只读的,因此当一个容器再容器运行时, 一个新的可写层在镜像层之上被创建。 容器中进程写入位于底层的一个文件时, 此文件的一 个拷贝在顶层被创建, 进程写的是此拷贝。

镜像构建

Dockerfile 编写
1. FROM ubuntu:20.04       # FROM从ubuntu:20.04 Docker映像创建一个层。
2. COPY . /app             #COPY从Docker客户端的当前目录添加文件。
3. RUN make /app           #RUN使用make构建您的应用程序。
4. CMD python /app/app.py  #CMD指定在容器中运行什么命令。

其中第一行是镜像的起始可以成为基础镜像,Dockerfile的每一条执行命令都会形成一层,镜像写完以后我们可以执行Docker命令来运行它

docker build -t test .

这条命令会让docker在本地构建一个名为test的镜像
镜像构建的过程不是由Docker客户端进行的,而是将整个目录文件上传到Docker的守护进程并在那里进行构建。
守护进程可以和docker客户端不在一台机器上。

下图是docker构建镜像的简单流程,当然省去了许多细节。

在这里插入图片描述

常用的docker指令

1. docker build -t test . # 根据当前目录构建镜像
2. docker images #列出本机上docker镜像
3. docker run --name runtime -p 8080:8080 -d test #运行一个test镜像,把名字叫做runtime 同时映射本机和docker的端口8080 
4. docker ps #列出正在运行的容器
5. docker inspect runtime # 查找runtime的详细信息
6. docker exec -it runtime bash #可以在容器内运行shell命令 
7. docker stop runtime # 停止名字为 runtime的容器
8. docker rm runtime #删除名字为runtime的容器
9. docker tag test dy/test # 给test镜像冲命名为dy/test
10. docker push dy/test #将镜像推送到docker hub  

以上就是常用的一些指令,但都是最简单,如果想知道详细的可以自行搜索

总结

本文章主要描述了 什么是容器,容器的实现方式,简单介绍了一下docker的相关运行方式以及常用命令
这里提示一下容器不是docker, docker是容器的一种。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值