皮皮网
皮皮网

【类似csdn的源码】【匿名 android源码】【乡村赛车源码】docker 1.10.3源码

来源:dede 企业源码 发表时间:2024-12-26 12:50:44

1.【抄作业】如何优雅的源码更新 Docker 容器?使用Watchtower让Docker容器实现自动更新
2.Pytorch Docker镜像构建教程(不同系统、CUDA、源码Python版本)
3.一文带你学会Linux下安装Docker
4.二进制方式搭建极简kubernetes1.10环境@centos7.3
5.Docker manifest 详解

docker 1.10.3源码

【抄作业】如何优雅的源码更新 Docker 容器?使用Watchtower让Docker容器实现自动更新

       在折腾NAS上的Docker时,手动更新容器显得有些繁琐。源码本文将介绍如何使用Watchtower这款工具,源码实现Docker容器的源码类似csdn的源码自动更新,让操作变得更加优雅。源码推荐将此技巧收藏以便未来使用。源码

       本文以威联通TS-C为例,源码作为家用旗舰级4盘位NAS,源码它配置强大,源码包括Intel四核心处理器、源码支持Intel OpenVINO AI引擎、源码双2.5GbE口、源码NVMe双M.2插槽,源码以及USB3.2和HDMI2.0接口,非常适合Docker和虚拟机的使用。

       Watchtower是匿名 android源码一个开源应用,它作为一个Docker镜像运行,主要功能是监控容器在启动时的镜像是否需要更新。它的运作方式相对简单:监视运行中的容器及其相关镜像(可自定义),发现镜像变动并需要更新时,通过发送SIGTERM信号结束容器运行,然后根据设定的指令重新启动容器(包括Watchtower本身)。

       Watchtower可以看作是应用市场,而Docker容器是APP,它通过更新命令实现容器的更新。

       部署Watchtower仅需一条命令,通过调整命令参数可以满足不同的更新需求。例如,快速更新全部容器、指定更新特定容器、自动清除旧镜像、设置更新频率(时间间隔或定时检测)、使用前台模式实现手动更新等。乡村赛车源码

       具体部署命令如下:

       - 快速更新全部容器(不推荐):`docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower`

       - 指定更新容器:`docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower [容器名1] [容器名2]`

       - 自动清除旧镜像:`docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --cleanup [容器名]`

       - 指定更新频率:`docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --cleanup --interval [秒数] [容器名]` 或 `docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --cleanup --schedule "0 0 3 * * *" [容器名]`

       - 前台模式(手动更新):`docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --cleanup --run-once [容器名]`

       通过实际操作,以威联通的Container Station可以确认Watchtower的运行状态和更新效果。只需执行一次命令,即可实现容器的更新,操作简洁明了。

       实操演示中,假设当前版本为4.5.1.的qbittorrentee镜像最新版本为4.5.2.。通过指定命令更新qbittorrentee容器,大约秒后,版本升级至4.5.2.,同时Watchtower退出运行。

       查看日志命令:`docker logs -f watchtower`

       本文为NAS上Docker操作的个人专栏第一篇,未来将分享更多实用技巧。感谢支持,期待与大家分享更多有趣的内容。

Pytorch Docker镜像构建教程(不同系统、CUDA、mybaits 源码下载Python版本)

       尽管 Pytorch官方和 Nvidia-NCG提供了很多版本的Pytorch镜像,但是我们平时的科研和工作中经常需要在特定系统版本、特定CUDA版本、特定Python版本下使用特定版本的Pytorch,官方的镜像很难满足自定义的需求,因此需要自己构建Pytorch镜像。下面我们来一步一步完成Pytorch镜像的构建。

       完整的构建脚本、自动化构建流程见: cnstark/pytorch_docker: Pure Pytorch Docker Images. (github.com) 构建完成的镜像见: cnstark/pytorch (Docker Hub)

       构建方法

       默认读者对与Docker镜像的构建有大致的了解,我们从Dockerfile开始。

       以Ubuntu.-Python3.9.-CUDA.3-Pytorch1..2为例,Dockerfile文件如下:

       执行

       以上就完成了Pytorch Docker镜像的构建。

       自动生成构建脚本

       我将以上构建流程整理成了 Github项目,可以自动生成构建脚本,完成构建。

       2. 生成构建脚本

       执行

       生成如下文件

       3. 执行构建

       Github自动构建

       借助Github的actions,可以在Github服务器上完成构建,icantv直播源码并自动推送至 DockerHub,避免由于本地网络等原因造成的构建失败。

       上述脚本会自动生成yml文件,提交至main分支后会自动触发构建。大家如果有需要的镜像版本,可以提交issue或者把上述文件提交pull request,我merge后就会触发构建。

一文带你学会Linux下安装Docker

       Docker支持以下的CentOS版本:

       目前,CentOS 仅发行版本中的内核支持 Docker。Docker 运行在 CentOS 7 上,要求系统为位、系统内核版本为 3. 以上。 Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为位、系统内核版本为 2.6.- 或者更高版本

       方式一:使用 yum 安装 Docker(CentOS 7下)

       Docker 要求 CentOS 系统的内核版本高于 3. ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。 通过

       命令查看你当前的内核版本

       安装 Docker

       从 年 3 月开始 docker 在原来的基础上分为两个分支版本: Docker CE 和 Docker EE。Docker CE 即社区免费版,Docker EE 即企业版,强调安全,但需付费使用。 本文介绍 Docker CE 的安装使用。 移除旧的版本:

       安装一些必要的系统工具:

       添加软件源信息:

       更新 yum 缓存:

       安装 Docker-ce:

       启动 Docker 后台服务

       测试运行 hello-world

       由于本地没有hello-world这个镜像,所以会下载一个hello-world的镜像,并在容器内运行。

       方式二:使用脚本安装 Docker(1) 使用sudo 或 root 权限登录 Centos。(2) 确保 yum 包更新到最新。(3) 执行 Docker 安装脚本。 执行这个脚本会添加docker.repo源并安装 Docker。(4) 启动 Docker 进程。(5) 验证docker 是否安装成功并在容器中执行一个测试的镜像。 到此,Docker 在 CentOS 系统的安装完成。

       镜像加速

       鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是网易的镜像地址:。

       Aliyun容器镜像加速安装/升级Docker客户端 推荐安装1..0以上版本的Docker客户端,参考文档docker-ce 配置镜像加速器 针对Docker客户端版本大于 1..0 的用户 您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

       请在该配置文件中加入(没有该文件的话,请先建一个): 新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%\docker\config\daemon.json(Windows) 来配置 Daemon。

       执行以下命令来删除 Docker CE:

二进制方式搭建极简kubernetes1.环境@centos7.3

       在CentOS 7.3(3..0-.el7.x_)环境中,构建一个极简的Kubernetes 1.集群,需在Master(...)和Node(.../)上进行以下步骤。

       首先,安装Etcd,确保在3台主机上安装,并编辑install_etcd.sh脚本,用正确IP地址替换ifconfig命令。依次在每台主机上执行脚本,配置Etcd的集群连接信息,避免启动间隔过长导致集群失败。运行后,通过etcdctl检查集群成员状态。

       接着,Flannel需要在所有主机上安装,编辑install_flannel.sh,设置正确的网络接口和etcd键值,然后分别执行安装命令。确认Flannel网络接口的配置。

       Docker在所有主机上采用二进制方式进行安装,编辑install-docker.sh,添加Flannel参数,然后执行安装脚本。通过docker version检查安装是否成功。

       Master节点部署Kubernetes,通过install_k8s_master.sh,配置Master与Etcd节点的连接。Minion节点通过install_k8s_node.sh,连接至Master。最后,确认集群状态,包括scheduler、etcd、controller-manager的健康,以及Node的状态。

       为了运行Busybox容器,需要在本地导入镜像。编写busybox_rc.yaml配置文件,然后使用kubectl创建资源。验证容器运行正常。

       部署kube-dns服务,确保集群内域名解析,修改kube-dns.yaml中的配置,通过kubectl create -f部署。同样,部署Dashboard服务,修改kubernetes-dashboard.yaml,使用Node IP访问。

       部署完成后,检查kube-dns和Dashboard的Pod状态。安装介质和镜像可以从提供的链接下载。

Docker manifest 详解

       åœ¨ . ( # )版本中添加

       å‚考链接:/engine/reference/commandline/manifest/#push-to-an-insecure-registry

                          /p/fad6b6fb

       è¯¥docker manifest命令本身不执行任何操作。为了对 manifest 或 manifest list 进行操作,必须有一个子命令。

            1. manifest是一个文件,这个文件包含了有关于镜像信息,如层、大小和摘要。docker manifest命令还向用户提供附加信息,比如构建镜像的操作系统和体系结构。

            2. manifest list 是通过制定一个或者多个镜像名称创建的镜像层列表,它可以被当作镜像名称在docker pull 和docker run 的命令中使用

        理想的情况下:manifest是根据相同功能,不同的os/arch组合的镜像构建的,因此,manifest 通常被称为“多架构镜像”。

        但是,用户可以创建一个指向两个镜像的manifest,然后对用户提供一个唯一的镜像名称。如:一个用于amd的Windows上,一个用于amd上的darwin

        从Docker registry v2.3和Docker 1. 开始,Docker hub就可以pull multi architecture Docker镜像了。

       manifest inspect --help

        Usage: docker manifest inspect[OPTIONS][MANIFEST_LIST] MANIFEST

        显示镜像的 manifest, or manifest list

        Options:

                --help                用法

                --insecure         å…è®¸ä¸Žä¸å®‰å…¨çš„注册表通信

                -v, --verbose     è¾“出其他信息包括 layers 和 platform

       Usage: docker manifest create MANIFEST_LIST MANIFEST[MANIFEST...]

        Create a local manifest list for annotating and pushing to a registry

        为annotating 创建一个本地的manifest, push到镜像仓库中

        Options:

                -a,--amend        ä¿®æ”¹çŽ°æœ‰manifest list

                --insecure         å…è®¸ä¸Žä¸å®‰å…¨çš„注册表进行通信

                --help                用法

       Usage: docker manifest annotate [OPTIONS] MANIFEST_LIST MANIFEST

        添加其他信息到本地镜像的manifest

        Options:

              --arch string                       è®¾ç½®ä½“系结构

              --help                                 ç”¨æ³•

              --os string                          è®¾ç½®æ“ä½œç³»ç»Ÿ

              --os-version string            设置操作系统版本

              --os-features stringSlice  设置操作系统功能

              --variant string                 è®¾ç½®ä½“系结构变体

       Usage: docker manifest push [OPTIONS] MANIFEST_LIST

        将 manifest list 推到 repository

        Options:

              --help              用法

              --insecure       å…è®¸æŽ¨é€åˆ°ä¸å®‰å…¨çš„仓库中

              -p, --purge      推送后删除本地清单列表

       manifest命令仅与Docker 仓库交互。因此,它无法查询引擎以获取允许的不安全仓库列表。为了允许CLI与不安全的仓库进行交互,某些docker manifest 命令带有一个--insecure标志。对于每个create查询注册表的事务(例如),--insecure必须指定标志。此标志告诉CLI,此注册表调用可能会忽略安全性问题,例如丢失或自签名证书。同样,在manifest 推到不安全的仓库上的时候,--insecure必须指定该标志。如果未与不安全的仓库一起使用,清单命令将找不到符合默认要求的仓库。

       1. 检查镜像的manifest对象

        ``

        $ docker manifest inspect hello-world

        {

                "schemaVersion": 2,

                "mediaType": "application/vnd.docker.distribution.manifest.v2+json",

                "config": {

                        "mediaType": "application/vnd.docker.container.image.v1+json",

                        "size": ,

                        "digest": "sha:ccbfdafdafbf2eddbabfc"

                },

                "layers": [

                        {

                                "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",

                                "size": ,

                                "digest": "sha:bfbadbeedca5a8cdbef5fcf4bc"

                        }

                ]

        }

        ``

       2. 检查镜像的manifest并获取os/arch信息

        该docker manifest inspect命令带有一个可选--verbose标志,可以提供image的名称(Ref),体系结构和os(平台)。就像其他使用映像名称的docker命令一样,可以引用带有或不带有标签的映像,也可以引用摘要(例如hello-world@sha:f3b3babbce9e6d6ffcdb0dfff)。

        这是一个使用--verbose标志检查镜像的manifest的示例:

        $ docker manifest inspect --verbose hello-world

        {

                "Ref": "docker.io/library/hello-world:latest",

                "Digest": "sha:f3b3babbce9e6d6ffcdb0dfff",

                "SchemaV2Manifest": {

                        "schemaVersion": 2,

                        "mediaType": "application/vnd.docker.distribution.manifest.v2+json",

                        "config": {

                                "mediaType": "application/vnd.docker.container.image.v1+json",

                                "size": ,

                                "digest": "sha:ccbfdafdafbf2eddbabfc"

                        },

                        "layers": [

                                {

                                        "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",

                                        "size": ,

                                        "digest": "sha:bfbadbeedca5a8cdbef5fcf4bc"

                                }

                        ]

                },

                "Platform": {

                        "architecture": "amd",

                        "os": "linux"

                }

        }

       3. 创建并推一个manifest list

        要创建manifest list,首先要在本地 create manifest list,方法是指定要包含在manifest list中的组成镜像。 请记住,这已推送到镜像仓,因此,如果要推送到docker镜像仓以外的其他仓库,则需要使用仓库名称或IP和端口创建manifest list。 这类似于标记镜像并将其推送到外部镜像仓库。

        创建manifest list的本地副本后,可以选择对其进行注释。 允许的注释包括体系结构和操作系统(覆盖镜像的当前值),操作系统功能以及体系结构变体。

        最后,需要将清单列表推送到所需的镜像仓。 下面是对这三个命令的描述,以及将它们全部组合在一起的示例。

        $ docker manifest create ...:/coolapp:v1 \

            ...:/coolapp-ppcle-linux:v1 \

            ...:/coolapp-arm-linux:v1 \

            ...:/coolapp-amd-linux:v1 \

            ...:/coolapp-amd-windows:v1

        Created manifest list ...:/coolapp:v1

       $ docker manifest annotate ...:/coolapp:v1 ...:/coolapp-arm-linux--archarm

       $ docker manifest push ...:/coolapp:v1

        Pushed manifest ...:/coolapp@sha:edcaedd6cadb8c2cf4eccdf1ecabfb with digest: sha:fdcc5fcffabfe0ee5dae9bd8caf8efa6cf7f2adcb

        Pushed manifest ...:/coolapp@sha:f3b3babbce9e6d6ffcdb0dfff with digest: sha:bca0bafcbfabe6bbef3a

        Pushed manifest ...:/coolapp@sha:dcccffafaaacbfbfc9 with digest: sha:dfaffbadba0d3bbcfba5ea8bbb8e9ee4e8

        Pushed manifest ...:/coolapp@sha:fbcd4acbae9eacbb3f1e3a4cd3eaf with digest: sha:5bb8eaa2eddbdf3ddfefbffabcf1cfc0e5e

        sha:bddbafcdcbecaf4a7cfacaba

       æ£€æŸ¥ manifest list

        $ docker manifest inspect coolapp:v1

        {

          "schemaVersion": 2,

          "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",

          "manifests": [

              {

                "mediaType": "application/vnd.docker.distribution.manifest.v2+json",

                "size": ,

                "digest": "sha:fdcc5fcffabfe0ee5dae9bd8caf8efa6cf7f2adcb",

                "platform": {

                    "architecture": "arm",

                    "os": "linux"

                }

              },

              {

                "mediaType": "application/vnd.docker.distribution.manifest.v2+json",

                "size": ,

                "digest": "sha:bca0bafcbfabe6bbef3a",

                "platform": {

                    "architecture": "amd",

                    "os": "linux"

                }

              },

              {

                "mediaType": "application/vnd.docker.distribution.manifest.v2+json",

                "size": ,

                "digest": "sha:dfaffbadba0d3bbcfba5ea8bbb8e9ee4e8",

                "platform": {

                    "architecture": "ppcle",

                    "os": "linux"

                }

              },

              {

                "mediaType": "application/vnd.docker.distribution.manifest.v2+json",

                "size": ,

                "digest": "sha:5bb8eaa2eddbdf3ddfefbffabcf1cfc0e5e",

                "platform": {

                    "architecture": "sx",

                    "os": "linux"

                }

              }

          ]

        }

       æŽ¨é€åˆ°ä¸å®‰å…¨çš„镜像仓库

        $ docker manifest create --insecure myprivateregistry.mycompany.com/repo/image:1.0 \

            myprivateregistry.mycompany.com/repo/image-linux-ppcle:1.0 \

            myprivateregistry.mycompany.com/repo/image-linux-sx:1.0 \

            myprivateregistry.mycompany.com/repo/image-linux-arm:1.0 \

            myprivateregistry.mycompany.com/repo/image-linux-armhf:1.0 \

            myprivateregistry.mycompany.com/repo/image-windows-amd:1.0 \

            myprivateregistry.mycompany.com/repo/image-linux-amd:1.0

        $ docker manifest push --insecure myprivateregistry.mycompany.com/repo/image:tag

相关栏目:探索