摘要:清除所有处于终止状态的容器访问仓库仓库是集中存放镜像的地方。仓库可以看成是一个具体的项目或目录。是注册服务器地址,是仓库名。生成认证文件编辑修改编辑启动测试私有仓库功能登录到私有仓库尝试推送拉取镜像端口若被占用请尝试用代理
docker save load 与 docker export import
利用ssh pv Linux管道 实现镜像迁移(带进度条)
docker save <镜像名> | bzip2 | pv | ssh <用户名>@<主机名> "cat |docker load"
docker load 与 docker import区别
容器快照文件将丢失所有的历史数据和元数据信息(仅保存容器当时的快照状态) 从容器快照文件导入时可以重新指定标签等元数据信息。 镜像存储文件则将保存完整记录, 体积也要更大。清除所有处于终止状态的容器
docker container prune访问仓库
仓库(Repository)是集中存放镜像的地方。
一个容易混淆的概念是注册服务器(Registry)。
Registry是管理仓库的具体服务器,每个Registry可以有多个Repository,每个Repository下面多个image。
仓库可以看成是一个具体的项目或目录。
d1.dockerpool.com/ubuntu, d1.dockerpool.com是注册服务器地址,ubuntu是仓库名。
Docker Hub需要先注册一个Docker账号
命令行登陆 退出
docker login docker logout
查找 拉取镜像
docker search docker pull
推送镜像
用户在登陆后 docker push 将自己的镜像推送到Docker Hub
自动创建
创建并登陆Docker Hub 以及目标网站
在目标网站中连接账户到Docker Hub
在Docker Hub中配置一个自动创建
选取一个目标网站中的项目(需要包含Dockerfile)和分支
指定Dockerfile位置, 并提交创建
私有仓库
容器运行
docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry
在私有仓库上传、搜索、下载镜像
docker tag 标记一个镜像,并推送到仓库。比如私有仓库地址为127.0.0.1:5000
格式: docker tag IMAGE[:TAG] [REGISTRY_HOST][:REGISTRY_PORT/]REPOSITORY[:TAG]
docker tag docker.io/mysql:5 127.0.0.1:5000/docker.io/mysql:5
docker push 上传标记的镜像
docker push 127.0.0.1:5000/docker.io/mysql
curl 查看仓库中的镜像
curl 127.0.0.1:5000/v2/_catalog
从私有仓库下载
需要先删除已有镜像 docker image rm 127.0.0.1:5000/docker.io/mysql:5 docker pull 127.0.0.1:5000/docker.io/mysql:5
注意事项
Docker默认不允许非HTTPS方式推送镜像,可以通过docker配置选项取消这个限制
对于upstar系统(Ubuntu 14.04 Debian7 Wheezy)
编辑/etc/default/docker,在其中的DOCKER_OPTS增加内容 DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com --insecure-registries=10.9.2.100:5000" sudo service docker restart
对于systemd系统(Ubuntu16.04+ Debian8+ centos7)
编辑/etc/docker/daemon.json (不存在则新建) { "registry-mirror": [ "https://registry.docker-cn.com" ], "insecure-registries": [ "122.112.207.157:5000" ] } systemctl restart docker私有仓库高级配置
使用Docker Compose构建,搭建一个拥有权限认证、TLS的私有仓库
使用openssl自行签发docker.domain.com的站点的SSL证书
step1 创建 CA 密钥
openssl genrsa -out "root-ca.key" 4096
step2 利用私钥创建 CA 根证书请求文件
openssl req -new -key "root-ca.key" -out "root-ca.csr" -sha256 -subj "/C=CN/ST=Zhejiang/L=Hangzhou/O=eichong/CN=eichong Docker Registry CA"
-subj参数 /C 表示国家 如CN /ST 表示省 /L 表示城市或地区 /O 表示组织名 /CN 通用名称
step3 配置 CA 根证书,新建root-ca.cnf
[root_ca] basicConstraints = critical, CA:TRUE, pathlen:1 keyUsage = critical, nonRepudiation, cRLSign, keyCertSign subjectKeyIdentifier=hash
step4 签发根证书
openssl x509 -req -days 3650 -in "root-ca.csr" -signkey "root-ca.key" -sha256 -out "root-ca.crt" -extfile "root-ca.cnf" -extensions root_ca
step5 生成站点 SSL 私钥
openssl genrsa -out "docker.domain.com.key" 4096
step6 使用私钥生成证书请求文件
openssl req -new -key "docker.domain.com.key" -out "site.csr" -sha256 -subj "/C=CN/ST=Zhejiang/L=Hangzhou/O=eichong/CN=docker.domain.com"
step7 配置证书,新建 site.cnf 文件
[server] authorityKeyIdentifier=keyid, issuer basicConstraints = critical, CA:FALSE extendedKeyUsage=serverAuth keyUsage = critical, digitalSignature, keyEncipherment subjectAltName = DNS:docker.domain.com, IP:127.0.0.1 subjectKeyIdentifier=hash
step8 签署站点 SSL 证书
openssl x509 -req -days 750 -in "site.csr" -sha256 -CA "root-ca.crt" -CAkey "root-ca.key" -CAcreateserial -out "docker.domain.com.crt" -extfile "site.cnf" -extensions server
经过以上步骤,就拥有了docker.domain.com的网站SSL私钥 docker.domain.com.key 和 SSL证书 docker.domain.com.crt 新建ssl文件夹将 docker.domain.com.key docker.domain.com.crt 移入,其他删除
配置私有仓库
私有仓库默认的配置文件位于 /etc/docker/registry/config.yml ,我们先在本地编辑 config.yml ,之后挂载到容器中。
version: 0.1 log: accesslog: disabled: true level: debug formatter: text fields: service: registry environment: staging storage: delete: enabled: true cache: blobdescriptor: inmemory filesystem: rootdirectory: /var/lib/registry auth: htpasswd: realm: basic-realm path: /etc/docker/registry/auth/nginx.htpasswd http: addr: :443 host: https://docker.domain.com headers: X-Content-Type-Options: [nosniff] http2: disabled: false tls: certificate: /etc/docker/registry/ssl/docker.domain.com.crt key: /etc/docker/registry/ssl/docker.domain.com.key health: storagedriver: enabled: true interval: 10s threshold: 3
生成 http 认证文件
mkdir auth docker run --rm --entrypoint htpasswd registry -Bbn username password > auth/nginx.htpasswd
编辑 docker-compose.yml
version: "3" services: registry: image: registry ports: - "443:443" volumes: - ./:/etc/docker/registry - registry-data:/var/lib/registry volumes: registry-data:
修改 hosts
编辑 /etc/hosts
docker.domain.com 127.0.0.1
启动
docker-compose up -d
测试私有仓库功能
登录到私有仓库
docker login docker.domain.com
尝试推送、拉取镜像
docker pull ubuntu:17.10 docker tag ubuntu:17.10 docker.domain.com/username/ubuntu:17.10 docker push docker.domain.com/username/ubuntu:17.10 docker image rm docker.domain.com/username/ubuntu:17.10 docker pull docker.domain.com/username/ubuntu:17.10
443端口若被占用,请尝试用Nginx代理
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/27423.html
摘要:原文地址零基础入门指南五仓库是集中存放镜像的地方。最常使用的公开服务是官方的,这也是默认的,并拥有大量的高质量的官方镜像。登录可以通过执行命令交互式的输入用户名及密码来完成在命令行界面登录。使用将这个镜像标记为。 原文地址:Docker零基础入门指南(五) 仓库( Repository )是集中存放镜像的地方。一个容易混淆的概念是注册服务器( Registry )。实际上注册服务器是管...
摘要:安装号称是世界上最流行的私服管理软件可以搭建几乎目前所有常见的仓库如等更是增加了对仓库的支持应该是搭建私服的唯一选择有两个版本和其中版本是免费专业版需要收费对于日常的仓库管理已经足够用支持二进制文件安装和安装这里选择安装简单方便运行以下命令 安装 Nexus号称是世界上最流行的私服管理软件(The worlds most popular repository),可以搭建几乎目前所有常见...
摘要:正好我们在使用作为的仓库,同时提供了等诸多类型的仓库功能。值得一提的是,我们可以使用这个仓库从和下载镜像,但是我们不能通过这个仓库推送镜像到远程仓库。 背景 我们一直使用 harbor 作为docker的镜像仓库,但Harbor只能作为私有仓库,当需要Docker Hub 或 Google Cloud Containers 上的镜像时,我们只能自己手动pull,重新打tag,再push...
摘要:前端开发过程中,少不了自己封装一些通用的包,但又不想放在公共的平台,所以搭建一个私有的仓库是很有必要的。在这里简单介绍如何使用在环境下的配置。轻量级私有代理注册表。加上,那就真的无敌方便了,搭建一个私有仓库轻轻松松几分钟搞定。前端开发过程中,少不了自己封装一些通用的包,但又不想放在公共的平台,所以搭建一个npm私有的仓库是很有必要的。 在这里简单介绍如何使用 verdoccio 在docke...
摘要:本文介绍如何使用搭建私有仓库,以及使用时如何映射到本地目录,方便简单对仓库进行各种操作。其次,创建目录,并添加的配置文件。当需要把某个项目发布到私有库时,直接。使用包名,即可安装私有包了。本文介绍如何使用 verdaccio 搭建私有npm仓库,以及使用 docker 时如何映射到本地目录,方便简单对仓库进行各种操作。系统环境是 Linux。 verdaccio verdacci...
阅读 2338·2021-09-26 10:21
阅读 2821·2021-09-08 09:36
阅读 3076·2019-08-30 15:56
阅读 968·2019-08-30 12:57
阅读 950·2019-08-26 10:39
阅读 3569·2019-08-23 18:11
阅读 3094·2019-08-23 17:12
阅读 1098·2019-08-23 12:18