Docker的镜像和容器介绍(一)

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: docker 提供了一个开始,打包,运行App应用的平台,把app和底层infrastructure(基础设施)隔离开来。

docker是干什么的

在介绍之前,我希望你能先记住这句话:“Docker 是一个便携的应用容器”。你可以不知道 Docker 所说的的“便携式容器”到底是什么意思,但是你必须清楚 Docker 在日常中能带来非常大的效率提升。 docker 提供了一个开始,打包,运行App应用的平台,把app和底层infrastructure(基础设施)隔离开来。

1651de46d6bb6a18_tplv-t2oaga2asx-zoom-in-crop-mark_4536_0_0_0.png

Docker的组织结构

  1. Docker Engine包括:
  • 后台进程(dockerd)
  • REST API Server
  • CLI接口(docker)

1651de665685242a_tplv-t2oaga2asx-zoom-in-crop-mark_4536_0_0_0.png

  1. 底层技术支持:
  • Namespaces:做隔离在pid,net,ipc,mnt,uts
  • Control groups: 做资源限制
  • Union file systems: Containe 和 image的分层

1651de5f02687358_tplv-t2oaga2asx-zoom-in-crop-mark_4536_0_0_0.png

什么是Image:

  • 文件和meta data的集合(root filesystem)
  • 分层的,并且每一层都可以添加改变删除文件,成为一个新的image
  • 不同的image可以共享相同的layer
  • Image本身是read-only的

16bf8d041de3c1b0_tplv-t2oaga2asx-zoom-in-crop-mark_4536_0_0_0.png

关于docker 镜像的示例代码:

##镜像的获取
docker pull [Tag]/[ImageName]
##根据dockerfile构建一个docker镜像
docker build -t(指定一个Tag) xiaopeng/hello .(当前路径下的Dovkerfile)
##查看一个镜像的分层
docker history [image ID]
##查看所有镜像
docker images
##删除镜像
docker rmi [imageID]
##把一个容器变成镜像(不安全,不建议使用,会有分层结构不明确的情况)
docker commit [cantainer] [repository[:tag]] [flags]

什么是Container

  • 通过Image创建出来的一个应用
  • 在Image layer 之上建立一个container layer(可读写)
  • 用 Java 的面向对象来表达:镜像就是类,容器就是实例
  • Image 负责app的存储和分发,Container 负责运行app

1651de94263a3043_tplv-t2oaga2asx-zoom-in-crop-mark_4536_0_0_0.png

关于docker 容器的示例代码:

## 获取docker 容器id
docker ps -aq
## 输出容器第一项的内容
docker ps -a | awk {'print$1'}
##获取status=exited的容器
docker container ls -f "status=exited" -q
## -it交互方式启动容器
docker run -it [container]
## run启动一个容器
docker run [container]
## -d后台方式启动容器
docker run -d [container]
##删除容器
docker rm [cantainerID]
##查看正在运行的容器
docker ps
##查看所有的容器
docker ps -a
复制代码

现在来创建一个简单的dokcer images and container,我们首先新建dockerfile文件,内容如下:

FROM centos  ## 引用基础镜像
RUN yum install -y vim ## 运行shell命令 
复制代码

此时我们build构建镜像的时候可以看到 running in 78a5c866d2b1

[ vagrant @ localhost docker - centos - vim ] s docker build - t xiaopeng163/centos- vim - new . Sending build context to Docker daemon 2.048kB
 Step 1/2:FR0M centos 
-->3fa822599e10
 Step 2/2: RUN yum install 
---> Running in 78a5c866d2b1l
 Loaded plugins : fastestmirror , ovl 

在build 过程中生成了一个临时的container,在临时的container里面去执行RUN yum install -y vim命令,最后build完成后就会删除这个临时的container 7f903766231e

complete !
 Removing intermediate container 178a5c866d2b1
--->7f903766231e
 Successfully built 7f903766231e

至此,我们已经学会的docker的基本应用~~~

拓展

问题:docker run之后状态总是Exited怎么解决

docker 运行的容器要求至少有一个进程在执行,如果没有进程执行则会自动退出。



相关文章
|
14天前
|
Linux iOS开发 Docker
Docker:容器化技术的领航者 —— 从基础到实践的全面解析
在云计算与微服务架构日益盛行的今天,Docker作为容器化技术的佼佼者,正引领着一场软件开发与部署的革命。它不仅极大地提升了应用部署的灵活性与效率,还为持续集成/持续部署(CI/CD)提供了强有力的支撑。
192 69
|
2天前
|
Kubernetes Cloud Native 持续交付
云原生之旅:Docker容器化与Kubernetes集群管理
【9月更文挑战第33天】在数字化转型的浪潮中,云原生技术如同一艘航船,带领企业乘风破浪。本篇文章将作为你的航海指南,从Docker容器化的基础讲起,直至Kubernetes集群的高级管理,我们将一起探索云原生的奥秘。你将学习到如何封装应用、实现环境隔离,以及如何在Kubernetes集群中部署、监控和扩展你的服务。让我们启航,驶向灵活、可伸缩的云原生未来。
|
4天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker与Kubernetes入门
【9月更文挑战第30天】在云计算的浪潮中,云原生技术正以前所未有的速度重塑着软件开发和运维领域。本文将通过深入浅出的方式,带你了解云原生的核心组件——Docker容器和Kubernetes集群,并探索它们如何助力现代应用的构建、部署和管理。从Docker的基本命令到Kubernetes的资源调度,我们将一起开启云原生技术的奇妙之旅。
|
9天前
|
jenkins 持续交付 Docker
docker之自定义制作镜像(python程序)
docker之自定义制作镜像(python程序)
|
9天前
|
Cloud Native 持续交付 Docker
云原生技术入门与实践:Docker容器化部署示例
【9月更文挑战第25天】在数字化转型的浪潮下,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,为初学者揭示云原生技术的核心概念及其应用价值。我们将以Docker容器为例,逐步引导读者了解如何将应用程序容器化,并在云端高效运行。这不仅是对技术趋势的跟随,更是对资源利用和开发效率提升的探索。
29 4
|
7天前
|
Kubernetes Linux 开发者
深入探索Docker容器化技术的奥秘
深入探索Docker容器化技术的奥秘
16 1
|
10天前
|
存储 Docker 容器
Docker中容器间的通信方式有哪些13
Docker中容器间的通信方式有哪些13
14 4
|
5天前
|
网络协议 安全 开发者
掌握 Docker 网络:构建复杂的容器通信
在 Docker 容器化环境中,容器间的通信至关重要。本文详细介绍了 Docker 网络的基础知识,包括网络驱动、端口映射和命名等核心概念,并深入探讨了 Bridge、Host、Overlay 和 Macvlan 四种网络类型的特点及应用场景。此外,还提供了创建、连接、查看和删除自定义网络的命令示例,以及高级网络配置方法,如网络命名空间、DNS 解析和安全通信配置,帮助开发者构建更健壮的容器化应用。
|
6天前
|
Cloud Native 持续交付 Docker
深入解析Docker容器化技术及其在生产环境中的应用
深入解析Docker容器化技术及其在生产环境中的应用
10 0
|
7天前
|
存储 Kubernetes Docker
深入探索容器化技术:Docker 实战与 Kubernetes 管理
深入探索容器化技术:Docker 实战与 Kubernetes 管理
21 0
下一篇
无影云桌面