[python](Docker SDK)上传镜像到私有仓库(ssl、身份认证)

(Docker SDK)上传镜像到私有仓库(ssl、身份认证)

API:https://docker-py.readthedocs.io/en/stable/

环境:python:3.7.3

配置参数:

cert = os.path.join(BASE_DIR, "utils/cert.pem")
key = os.path.join(BASE_DIR, "utils/key.pem")

docker_server = "xx.xx.xx.xx:5555"
registry_server = "xx.xx.xx:5000"

# tls配置
tls_config = docker.tls.TLSConfig(
    client_cert=(cert, key),
    ssl_version=ssl.PROTOCOL_TLSv1_2,
)
  • 连接docker客户端
client = docker.DockerClient(base_url=docker_server, tls=tls_config)
  • 导入镜像
#  打开文件,获取二进制数据
with open(images, ‘rb‘) as f:
    content = f.read()

# 导入镜像
images = client.images.load(content)
  • 查看镜像是否正常
# 运行容器  detach=True:返回一个Container对象
try:
    container = client.containers.run(images[0], detach=True)
except docker.errors.ImageNotFound as e:
    print("指定的图像不存在!")
except docker.errors.APIError as e:
    print("服务器返回错误!")
# 停止运行的容器
container.stop()
# 删除容器
container.remove()
  • 给镜像打标签
tags = images[0].tags[0].split(‘:‘)
# tags: ex. hello-world:latest
rest = images[0].tag(registry_server + "/" + tags[0].split(‘/‘)[-1], tags[1])
# rest: True
  • 登陆私有仓库
rest = client.login(username=‘admin‘, password=‘admin‘, registry=registry_server)
# rest:{‘IdentityToken‘: ‘‘, ‘Status‘: ‘Login Succeeded‘}
  • 上传镜像到私有仓库
# 上传镜像到私有仓库
for line in client.images.push(registry_server + "/" + images[0].tags[0], stream=True, decode=True):
    print(line)
# rest: {‘status‘: ‘The push refers to a repository [xx.xx.xx:5000/hello-world]‘}
#        {‘status‘: ‘Preparing‘, ‘progressDetail‘: {}, ‘id‘: ‘af0b15c8625b‘}
#        {‘status‘: ‘Layer already exists‘, ‘progressDetail‘: {}, ‘id‘: ‘af0b15c8625b‘}
#        {‘status‘: ‘latest: digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a size: 524‘}
#        {‘progressDetail‘: {}, ‘aux‘: {‘Tag‘: ‘latest‘, ‘Digest‘: ‘sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a‘, ‘Size‘: 524}}
  • 删除打标签镜像
client.images.remove(registry_server + "/" + images[0].tags[0])

原文地址:https://www.cnblogs.com/ttkl/p/11043677.html

时间: 2024-07-29 12:18:41

[python](Docker SDK)上传镜像到私有仓库(ssl、身份认证)的相关文章

Docker上传镜像到私有库的报错

1.查看docker的版本信息 # docker version Client:  Version:18.03.0-ce  API version:1.37  Go version:go1.9.4  Git commit:0520e24  Built:Wed Mar 21 23:09:15 2018  OS/Arch:linux/amd64  Experimental:false  Orchestrator:swarm Server:  Engine:   Version:18.03.0-ce

使用deploy命令上传jar到私有仓库

打开cmd命令提示符,mvn install是将jar包安装到本地库,mvn deploy是将jar包上传到远程server,install和deploy都会先自行bulid编译检查,如果确认jar包没有问题,可以使用-Dmaven.test.skip=true参数跳过编译和测试. 全命令为: mvn deploy:deploy-file -Dmaven.test.skip=true -Dfile=D:\work\scan\com.kevin.skeleton\target\skeleton-1

Maven组件通过命令上传本地和私有仓库

安装本地包到本地仓库: mvn install:install-file -DgroupId=com.xxx -DartifactId=mqtt-server-client -Dversion=1.0.1 -Dpackaging=jar -Dfile=E:\__vdt\MVVP\mqtt-server-client-1.0.1.jar -DpomFile=E:\__vdt\MVVP\pom.xml 安装本地包到私有仓库: mvn deploy:deploy-file -DgroupId=com.

docker打包镜像,上传镜像仓库,使用rancher发布

步骤一.首先将项目打包放在指定目录下 项目jar包名称为  micro-app.jar 步骤二.将jar包名称改为指定名称,执行命令    docker build -t micro-gateway:v1.4 . 意义:执行当前目录下的dockerfile文件创建镜像,镜像的标签为  micro-gateway:v1.4 dockerfile的文件内容为 FROM 你的ip:你的端口/library/jdk8:v1.0 MAINTAINER 你的标识 COPY ./restart.sh /res

Python Selenium 文件上传(二)

今天补充一种文件上传的方法 主要是因为工作中使用SendKeys方法不稳定,具体方法见: Python Selenium 文件上传(一) 这种方法直接通过命令行执行脚本时没有问题,可以成功上传,但是如果通过saltstack 远程控制执行时,SendKeys就定位不到窗口了. 所以采用这种新的方式来实现文件上传功能,并完美的解决了这个问题. 具体操作步骤如下: 1.下载工具 AutoIt及使用 AutoIt目前最新是v3版本,这是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows

Python Selenium 文件上传(一)

昨天写了Web 文件下载的ui自动化,下载之后,今天就要写web 文件上传的功能了. 当然从折腾了俩小时才上传成功.下面写一下自己操作的步骤 首先网上说的有很多方法 如 input 标签的最好做了,直接定位到元素,然后再sendKeys("value")即可 <input id="file_name" class="text-1 w255" type="text" readonly="" value=

Python WebDriver 文件上传(二)

今天补充一种文件上传的方法 主要是因为工作中使用SendKeys方法不稳定,具体方法见: Python WebDriver 文件上传(一) 这种方法直接通过命令行执行脚本时没有问题,可以成功上传,但是如果通过saltstack 远程控制执行时,SendKeys就定位不到窗口了. 所以采用这种新的方式来实现文件上传功能,并完美的解决了这个问题. 具体操作步骤如下: 1.下载工具 AutoIt及使用 AutoIt目前最新是v3版本,这是一个使用类似BASIC脚本语言的免费软件,它设计用于Window

微信js sdk上传多张图片

微信js sdk上传多张图片,微信上传多张图片 该案例已tp3.2商城为例 直接上代码: php代码: public function ind(){ $appid="11111111111111111111"; $secret="11111111111111111111"; $token = S('access_token'); if (!$token) { $res = file_get_contents("https://api.weixin.qq.c

python中FTP上传和下载

写这篇文章方便以后遇到需要定期去上传或下载时直接可以此简单模板. 1.python中FTP上传 #/usr/bin/python  # -*- coding: utf-8 -*-  import datetime import time import sys import os import ftplib def Upload_File():     ftp = ftplib.FTP()     TODAY=time.strftime('%Y-%m-%d')     FTPIP= "10.10.