云原生 | Docker篇Docker镜像(image)与服务

Posted Binaire-沐辰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云原生 | Docker篇Docker镜像(image)与服务相关的知识,希望对你有一定的参考价值。

文章目录

🪐Docker镜像操作

镜像是Docker的三大组件之一。
Docker运行容器前需要本地存在对应的镜像,如果本地不存在,Docker会从镜像仓库下载。
下面主要从以下几个方面来了解docker镜像:

  • 从仓库获取镜像
  • 管理本地仓库的镜像

Docker命令使用

获取命令行帮助信息直接在命令行内输入docker命令后敲回车

📌查找镜像

我们可以从 Docker Hub网站来搜索镜像,Docker Hub网址为: https://hub.docker.com/

我们也可以使用docker search命令来搜索镜像。比如我们需要一个tomcat的镜像来作为我们的web服务。我们可以通过docker search命令搜索tomcat来寻找适合我们的镜像。


举个栗子

docker search tomcat

  • NAME: 镜像名称;
  • DESCRIPTION: 镜像描述;
  • OFFICIAL: 是否 Docker 官方发布;
  • STARS: 点赞数;
  • AUTOMATED: 自动构建。

📌镜像列表

想要查看已经下载的镜像,可以使用docker images ls命令

[root@localhost ~]# docker images   # docker images ls

其中列表包含了仓库名版本号(标签)、镜像ID创建时间以及镜像大小

镜像ID则是镜像的唯一标识,一个镜像可以对应多个标签。因此,如果两个镜像拥有相同的ID,说明它们对应的是同一个镜像。

镜像体积

  • 如果仔细观察,会注意到,这里标识的所占用空间和在Docker Hub上看到的镜像大小不同。这是因为Docker Hub中显示的体积是压缩后的体积。在镜像下载和上传过程中镜像是保持着压缩状态的,因此 DockerHub所显示的大小是网络传输中更关心的流量大小。而docker image ls 显示的是镜像下载到本地后,展开的大小,准确说,是展开后的各层所占空间的总和,因为镜像到本地后,查看空间的时候,更关心的是本地磁盘空间占用的大小。
  • 另外一个需要注意的问题是,docker image ls列表中的镜像体积总和并非是所有镜像实际硬盘消耗。由于Docker镜像是多层存储结构,并且可以继承、复用,因此不同镜像可能会因为使用相同的基础镜像,从而拥有共同的层。由于Docker使用Union FS,相同的层只需要保存一份即可,因此实际镜像硬盘占用空间很可能要比这个列表镜像大小的总和要小的多。

📌获取镜像

之前提到过,Docker Hub上有大量的高质量的镜像可以用,这里我们就说一下怎么获取这些镜像。

从 Docker镜像仓库获取镜像的命令是docker pull其命令格式为:

docker pull [选项] [Docker Registry 地址[:端口号]/] 镜像名称[:版本号]
具体的选项可以通过docker pull --help命令看到,这里我们说一下镜像名称的格式。
- Docker 镜像仓库地址:―地址的格式一般是〈<域名/IP>[:端口号]。默认地址是 Docker Hub。
-仓库名:这里的仓库名是两段式名称,即<用户名>/<软件名>。
对于Docker Hub,如果不给出用户名,则默认为library,也就是官方镜像。

举个栗子

我们需要一个tomcat的镜像来作为我们的web服务,就可以通过 docker pull 获取镜像。

# docker pull tomcat:版本号
docker pull tomcat   # 不指定版本号,默认获取latest版本

📌删除镜像

删除本地镜像的命令是docker rmi 其命令格式为:

docker rmi [选项] <镜像1> [<镜像2>...]

用镜像ID、镜像名、摘要删除镜像
其中,镜像ID可以是部分镜像ID、完整镜像ID、镜像名或者镜像摘要

如果要删除本地的镜像,可以使用 docker rmi 命令

docker rmi 镜像ID # 删除本地指定镜像

删除镜像之前必须确认该镜像没有被任何容器使用

删除所有镜像

# 查看本地所有镜像的 IMAGE ID
docker images -q  
# 根据镜像ID删除所有镜像
docker rmi `docker images -q`

📌保存镜像

备份本地仓库的镜像
1、用 save 命令将本地镜像保存到当前目录下

docker save -o 导出的路径及名称 镜像名称
# 举个栗子
docker save -o tomcat.tar 镜像名称

2、将本地目录下的镜像备份文件导入到本地的docker仓库

# 命令1:
docker load -i tomcat.tar
# 命令2:
docker load < tomcat.tar

具体操作步骤如下:

  1. 首先保存镜像,然后删除该镜像。

  1. 然后将刚才的备份文件导入本地docker仓库,之后就可以继续使用 tomcat 了!


修改镜像名称

docker tag 镜像id 新镜像名称:版本号
# 举个栗子
docker tag fe helloworld:1

🪐Docker服条相关命令

  • 启动docker服务:
systemctl start docker
  • 停止docker服务:
systemctl stop docker
  • 重启docker服务:
systemctl restart docker
  • 查看docker服务状态:
systemctl status docker
  • 设置开机启动docker服务:
systemctl enable docker

云原生 | Docker篇Docker架构 & 中央仓库 & 安装


目录

Docker:Build once,Run anywhere!!!  

【云原生

一、Docker架构

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
Docker 容器通过 Docker 镜像来创建。

1.1 基本概念

docker包括三个基本概念:

  • 镜像(Image):Docker镜像(Image) ,就相当于是一个root文件系统。比如官方镜像ubuntu:16.04就包含了完整的一套Ubuntu16.04最小系统的root文件系统。
  • 容器(Container):镜像(lmage)和容器(Container)的关系,就像是面向对象程序设计中的类和对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

Docker的运行离不开这三员大将的支持。也有人会误以为,Docker就是容器。但Docker不是容器,而是管理容器的引擎。

1.2 Docker引擎

docker引擎组件的流程如下图所示:

【云原生

容器与镜像的关系类似于面向对象编程中的对象与类。

【云原生


一个类可以new很多个对象,同样,一个镜像也可以创建许多容器。

【云原生

  • Docker 主机(Host):一个物理机或虚拟机,用于运行Docker服务进程和容器,也称为宿主机,node节点。
  • Docker 服务端(Server):Docker守护进程,运行docker容器。
  • Docker 客户端(Client):客户端使用docker 命令或其他工具调用docker API与Docker的守护进程通信。
  • Docker 仓库(Registry): 保存镜像的仓库,可以理解为代码控制中心的代码仓库。官方仓库:​​https://hub.docker.com/​​,提供了庞大的镜像集合供使用,也可以搭建私有仓库harbor。
  • Docker 镜像(Images):镜像可以理解为创建docker实例使用的模板。
  • Docker 容器(Container): 容器是从镜像生成对外提供服务的一个或一组服务。
  • Docker Machine:Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker。

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

二、Docker的中央仓库

Docker仓库用来保存镜像的,可以理解为代码控制中的代码仓库。

  1. Docker官方的中央仓库,这个仓库是镜像最全的,但下载速度较慢 https://hub.docker.com/
  2. 国内的镜像网站:网易蜂巢、daoCloud、
    ​​​https://c.163yun.com/hub#/home​​https://hub.daocloud.io/ (推荐)
  3. 在公司内部会采用私服的方式拉取镜像。

三、Docker安装

Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。

可以通过​​uname -r ​​命令查看你当前的内核版本。

【云原生

Docker 在原来的基础上分为两个版本:Docker CE和 Docker EE。Docker CE是社区免费版,Docker EE是付费企业版,安全。
下面介绍Docker CE的安装。

开始安装
1.确保 yum 包更新到最新。

yum update

2. 下载关于Docker的依赖环境,yum-util提供yun-config-manager功能,另外两个是devicemapper驱动依赖

yum -y install

3. 设置一个下载docker的镜像源

# 源1:阿里云源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 源2:官方提供

4. 更新 yum 缓存

yum makacache fast

5. 安装docker

yum -y install

6. 启动,并设置为开机自动启动

# 启动Docker服务
systemctl start docker
# 设置开机自动启动
systemctl enable docker

7. 测试

# 测试
docker

【云原生

8. 验证安装是否成功(有client和service两部分表示docker安装启动都成功了)

# 查看docker版本,验证是否安装成功
docker

【云原生

四、Docker卸载

执行下面的命令来删除Docker CE

sudo yum remove docker-ce
sudo rm


以上是关于云原生 | Docker篇Docker镜像(image)与服务的主要内容,如果未能解决你的问题,请参考以下文章

云原生时代必须具备的核心技能之Docker高级篇(Harbor-镜像私服)

云原生 | Docker篇Docker架构 & 中央仓库 & 安装

云原生时代必须具备的核心技能之Docker高级篇(Docker实战之MySQL高可用集群搭建)

云原生 | Docker篇《带你走进Docker的世界》轻松学会原理|架构|安装|加速

云原生 | Docker篇《带你走进Docker的世界》轻松学会原理|架构|安装|加速

[云原生]Docker