当前位置:   article > 正文

Docker_oci runtime create failed

oci runtime create failed

一.什么是Docker?

1.Docker是世界领先的软件容器化平台;

2.主要是围绕image(镜像)和container(容器)工作;

3.Docker的客户端通过命令行或者客户端向Docker的服务端发起创建容器的请求;服务端接收请求之后,到镜像文件仓库管理器中拉取相应的镜像文件,并运用该镜像文件,运行过程中的镜像文件就是容器。容器是由镜像实例化而来,这和我们学习的面向对象的概念十分相似,我们可以把镜像看作类,把容器看作类实例化后的对象。

二.Docker包含哪些?

Docker engine

Docker machine

Docker network

Docker服务端:docker daemon就是docker的主服务

Docker客户端:docker的客户端分命令和API两种类型

Docker仓库:统一标准化管理镜像。(Registry)

Docker 镜像:镜像是容器通过打包而来的,诸如redis,nginx镜像。镜像通过实例化创建容器。

Docker 容器:容器是镜像的实例化对象,由镜像生成,生成的容器又能打包生成镜像。

三.Docker做什么?

将应用及依赖一起打包成标准的单元:

1.包含了完整程序和依赖包,甚至包含应用需要的最小化操作系统

2.镜像移植到任何linux环境下都可以直接运行(需要docker engine)

3.轻量、开放、安全

四.Docker和VM的区别:

VM:

1.资源占用多,虚拟机需要独占内存和硬盘空间;

2.冗余多,虚拟机是完整的操作系统,一些必要的操作,例如用户登录等;

3.相较于Docker来说,启动慢,需要启动操作系统。

Docker:

1.启动快,基于宿主操作系统的Docker,容器里面的应用直接是底层系统的进程,所以启动容器相当于启动一个系统进程,速度快很多;

2.资源占用少,容器只占用需要的资源;

3.体积小,相较于VM,不包含操作系统以及其它文件,所以容器文件体积非常小;

4.部署方便,多个服务之间隔离性好;

  • Docker的目标:

1.每个容器都可以是独立的服务

2.服务的安装、部署和运维更加便捷

3.开发人员和运维人员的工作区分得更清晰

4.程序员再也不必拘泥于特定的语言,而只需要维护各自的Dockerfile

AutoScaling成为可能

  • Docker典型应用场景
  1. 自动打包和发布应用;
  2. 创建轻量级的私有云
  3. 自动测试和持续集成和部署;
  4. 部署和扩展web应用,数据库和后端服务;
  • 镜像和容器:

镜像:

1.什么是镜像:

(1)文件和meta data的集合;

(2)分层的,并且每一层都是可添加和删除的,能成为一个新的image;

(3)image 本身是 read-only的

2.镜像层:镜像可以看成是由多个镜像层叠加起来的一个文件系统(通过UnionFS与AUFS文件联合系统实现),镜像层也可以简单理解为一个基本的镜像,而每个镜像层之间通过指针的形式进行叠加。

uploading.4e448015.gif转存失败重新上传取消

Id:镜像层id;

Layer Metadata:元数据,包含了Docker构建和运行的信息和父层的层次信息;

Pointer to Parent Layer:镜像层指针,如果一个层没有这个指针,说明它处于最底层;

uploading.4e448015.gif转存失败重新上传取消

3.Image:镜像是一堆只读层的统一视角,除了最底层没有指向外,每一层都指向它的父层。统一文件系统( Union File System)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,这样就隐藏了多层的存在。在用户的角度看来,只存在一个文件系统。镜像每一层都是不可写的,都是只读层。

容器:

1.什么是容器:

(1)通过Image创建(copy);

(2)在Image layer 之上建立一个 container layer(可读写);

(3)类比面向对象:Image=>类; container=>实例对象

(4) Image负责app的存储和分发,container负责运行app;

2.容器的构成(一层读写+多层只读层)

uploading.4e448015.gif转存失败重新上传取消

3.Running Container(运行态容器,一层读写层+多层只读层+隔离的进程空间和包含其中的进程)

uploading.4e448015.gif转存失败重新上传取消

  • Docker命令介绍

1.Docker命令:

(1)systemctl start docker(启动docker)

(2)systemctl stop docker(关闭docker)

(3)systemctl restart docker(重启docker)

(4)systemctl status docker(查看docker状态)

(5)docker version(查看docker版本号信息)

(6)docker info(查看docker详细信息)

2.镜像命令:

显示镜像:

(1)docker images -a(显示所有镜像(包含名称为none))

(2)docker images -aq (只显示id)

(3)docker images name:withtag

(4)docker images --no-trunc (显示完整id)

(5)docker images -aq --no-trunc (显示所有镜像的完整id)

(6)docker images --filter “dangling=true”(仅显示none镜像)

(7)docker images --digests(显示摘要)

(8)docker images --format “table {{.ID}}\t{{.Repository}}\t{{.Tag}}”       

删除镜像:

(1)docker rmi test

(2)docker rmi -f test(强制删除镜像)

(3)docker rmi $(docker images -f "dangling=true" -q)(删除所有none)

搜索镜像:

(1)docker search mysql(镜像名)

(2)docker search --filter=STARS=1000 mysql(搜索STARS大于1000的mysql镜像)

拉取镜像:

(1)docker pull mysql (从docker仓库拉取最新版的mysql镜像文件)

(2)docker pull mysql:5.5.0(从docker仓库拉取指定版本的mysql镜像文件)

保存镜像:

(1)docker save mysql -o /myImage.tar

加载镜像:

(1)docker load -i myImage.tar

3.容器命令:

创建容器:

(1)docker run --name redis -d -p 6379:6379 redis

(2)docker run --name redis2 -d -p 6378:6379 redis

(3)docker run -itd --redis3 -d -p 6377:6379 redis

(4)docker run -itd --name redis001 -p 8888:6379 redis:5.0.5 /bin/bash

停止容器:

(1)docker stop redis docker stop redis2

(2)docker kill redis(强制停止)

启动容器:

(1)docker start redis

容器提交成镜像:

(1)docker commit redis redis3

删除容器:

(1)docker rm redis(只有停止的容器才能删除)

查看容器:

(1)docker ps(查看正在运行的容器)

(2)docker ps -a(查看所有容器,包括运行和停止的容器)

将容器打包成镜像文件:

(1)docker -a=”autor_name” -m=”message” containerID ImageName:tag

例如:

docker -a=”lxb” -m=”打包mysql成镜像文件” a7c737qwe731 mySQL:1.0

参考文献:

Docker容器和镜像的区别:

https://blog.csdn.net/MyySophia/article/details/108136229

Docker的优缺点:

https://blog.csdn.net/GV7lZB0y87u7C/article/details/93806070

Docker简介:

https://blog.csdn.net/LiaoHongHB/article/details/103157336    

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/890530
推荐阅读
相关标签
  

闽ICP备14008679号