Docker镜像的基本操作总结

docker,镜像,基本操作,总结 · 浏览次数 : 263

小编点评

**容器化技术概述** **容器化技术**是一种软件开发技术,它将应用程序分解成一个个独立的容器,以便在不同的主机上运行并相互隔离。这些容器包含应用程序的代码、库和配置文件,并可以独立地启动和停止。 **Docker** 是一个流行的容器化平台,它提供了以下核心概念: * **镜像**:是一种可以运行应用程序的模板,它包含应用程序代码、库和配置文件。 * **容器**:一个独立的运行环境,它运行着镜像中的应用程序。 * **Dockerfile**:一个文本文件,包含构建容器的指令。 * **docker build**:用于构建 Docker 镜像的命令。 * **docker run**:用于运行容器的命令。 **Docker 的主要概念** * **镜像**:一个独立的存储库,包含应用程序代码、库和配置文件。 * **容器**:一个运行在 Docker 内核中的独立环境。 * **Dockerfile**:一个文本文件,包含构建 Docker 镜像的指令。 * **docker build**:用于构建 Docker 镜像的命令。 * **docker run**:用于运行容器的命令。 **容器和 Docker 的关系** * **容器**是镜像的运行实例。 * **镜像**是容器的模板,它包含应用程序代码、库和配置文件。 * **docker build** 和 **docker run** 命令用于构建和运行容器。 ** Docker 的主要功能** * **可扩展性**:容器可以轻松添加或删除。 * **隔离性**:容器是相互隔离的,它们不会影响其他容器。 * **效率**:容器共享系统资源,从而提高性能。 * **可移植性**:容器可以运行在各种操作系统上。 **获取 Docker 的镜像** * **Docker Hub**:是 Docker 的公共镜像仓库,包含各种开源和私有应用程序。 * **国内镜像源**:一些国内镜像源,例如 **c.163.com**,提供加速访问的镜像。 **设置 Docker 的默认配置文件路径** * **`docker.service`**:用于定义 Docker 服务的配置文件。 * **`docker.conf`**:用于定义全局配置文件。

正文

摘要

容器化是上个十年比较火的技术.
现在看起来在进行总计有点晚了.
不过linux是三十年前的,我依旧没有总结好
道理是一样的.
技术不在于新旧, 重要的是学习到原理.

Docker的重要概念

Registry
image
container

Docker的核心机制在于
从Registry里面拉取image
然后基于image 运行起来一个 container来提供服务.
image和container的关系很像
software和process的关系. 
镜像是有不可写的制度层构建的, 容器会运行成功时增加一个可写的最上层.
基于Copy On Wirte的机制来显示高性能的IO(内容聚合性能损耗很大)

Docker拉取加速

Docker默认是从 docker hub执行拉取镜像.
重大节日重大会议时一般拉取经常失败.
所以此时建议还是能够使用国内的镜像源进行加速.
一般可以用如下几个:
名称 地址
中国官方镜像 https://registry.docker-cn.com
网易163镜像 http://hub-mirror.c.163.com
中科大镜像 https://docker.mirrors.ustc.edu.cn
七牛云加速器 https://reg-mirror.qiniu.com

Systemd的方式进行设置

systemctl status docker
或者docker 的默认配置文件路径, 比如:
/usr/lib/systemd/system/docker.service
修改配置文件: 
在Service配置节增加内容:
DOCKER_OPTS="--registry-mirror=https://docker.mirrors.ustc.edu.cn/"
然后执行命令
systemctl daemon-reload && systemctl restart docker
再进行相关docker pull 速度就会比较快了. 

获取镜像库里面Docker的tag

docker pull 之前可以进行 docker search
但是docker search 是没有具体的tag的
这里学习了下:
https://www.zhoubotong.site/ 里面的文档.
可以编写一个脚本,自己拉取所有的镜像tag
方法其实是 利用 docker的原生API进行分析

注意 需要优先安装一下jq 方便进行json序列化的处理
yum install jq -y 

获取tag的脚本

  • 需要注意这个机器必须是能够上网的.
  • 建议保存成类似于 gettags 一样的脚本名称.
#!/bin/bash

repo_url=https://registry.hub.docker.com/v2/repositories/library
image_name=$1

curl -L -s ${repo_url}/${image_name}/tags?page_size=1024 | jq '.results[]["name"]' | sed 's/\"//g' | sort -u

拉取验证

./gettags rabbitmq 
结果为:
[root@NFSV3 deploy]# ./gettags rabbitmq 
3
3.10
3.10.10
3.10.10-alpine
3.10.10-management
3.10.10-management-alpine
3.10.11
3.10.11-alpine
3.10.11-management

Docker的导出与导入

Docker 其实有两种保存模式
docker save 还有 docker export
建议不要使用 docker export 他没有镜像层, 而是导出容器的运行时状态. 

建议使用 docker save 进行导出. 
可以使用 gzip命令同事进行压缩,减少网络损耗尽快导出导入的效率
docker save kylinv10sp2_aarch64:xxxx |gzip > /kylinv10sp2_aarch64_xxxx.tar.gz
复制到其他机器后执行
docker load -i kylinv10sp2_aarch64_xxxx.tar.gz
就很容易实现了镜像的备份与恢复. 

与Docker镜像的基本操作总结相似的内容:

Docker镜像的基本操作总结

摘要 容器化是上个十年比较火的技术. 现在看起来在进行总计有点晚了. 不过linux是三十年前的,我依旧没有总结好 道理是一样的. 技术不在于新旧, 重要的是学习到原理. Docker的重要概念 Registry image container Docker的核心机制在于 从Registry里面拉取

Docker 必知必会3----使用自己制作的镜像

前面的两篇文章分别讲了,docker的基础概念,设计思路以及docker的基本操作。感兴趣的同学可以查阅: https://www.cnblogs.com/jilodream/p/18177695https://www.cnblogs.com/jilodream/p/18184687 本文我们将介绍

Docker 镜像减少体积的思路和方法

# Docker 镜像减少体积的思路和方法 ## 背景 ``` 有一个项目感觉镜像有点大 这边同事喊着一起帮忙处理一下. 今天基本上就在客户现场进行处理了. 想着应该把自己想到的东西整理一下. ``` ## 整体思路 ``` 1. 清理dockerfile 同级目录内的文件, 仅保留必须文件 doc

clash代理docker实现镜像拉取

前言 前段时间不少国内镜像源都突然莫名其妙不能用了,也没个具体说明,我等草民只能胡思乱猜。翻了翻docker的官方文档,倒腾了下clash代理docker,基本也能正常拉取镜像。 参考官方文档:https://docs.docker.com/config/daemon/systemd/#httpht

docker 部署环境基本流程

博客地址:https://www.cnblogs.com/zylyehuo/ 环境部署的问题,非常棘手,因此引入了容器技术 解决环境迁移的难题 1.利用虚拟机的模板克隆功能,将整个机器的环境复制一份,再丢给第二个机器去使用 2.最好是使用docker去部署环境 docker的生命周期概念 镜像,是一

docker 搭建私有仓库并发布私有镜像

本文为博主原创,转载请注明出处: 1.自建私有docker仓库 自建一个Docker仓库,可以使用Docker官方提供的开源项目Docker Registry。以下是一些基本步骤: 安装Docker Registry: 在服务器上安装Docker引擎。 使用以下命令拉取Docker Registry

[转帖]查找 docker 镜像的所有 tag

查找 docker 镜像的所有 tag https://www.jianshu.com/p/f974ec9e7937 建议阅读方式 可前往语雀阅读,体验更好:查找 docker 镜像的所有 tag 环境说明 centos7 阿里云主机一台: docker 相关信息如下: 测试镜像 hello-wor

[转帖]查找 docker 镜像的所有 tag

https://www.jianshu.com/p/f974ec9e7937 建议阅读方式 可前往语雀阅读,体验更好:查找 docker 镜像的所有 tag 环境说明 centos7 阿里云主机一台: docker 相关信息如下: 测试镜像 hello-world 的 tags 情况见官网:dock

Docker镜像精简方法之二 COPY vs ADD 与镜像层

# Docker镜像精简方法之二 COPY vs ADD 与镜像层 ## 摘要 ``` 昨天只是讲了一下大体的思路. 但是没有实操. 今天想着修改一下默认的打包镜像的命令,验证一下效果 ``` ## 原始命令 ``` FROM adoptopenjdk:8u222-b10-jdk-hotspot-b

制作 Python Docker 镜像的最佳实践

概述 📚️Reference: 制作容器镜像的最佳实践 这篇文章是关于制作 Python Docker 容器镜像的最佳实践。(2022 年 12 月更新) 最佳实践的目的一方面是为了减小镜像体积,提升 DevOps 效率,另一方面是为了提高安全性。希望对各位有所帮助。 通用 Docker 容器镜像