🍁作者简介:🏅云计算领域优质创作者🏅新星计划第三季python赛道第一名🏅 阿里云ACE认证高级工程师🏅
✒️个人主页:小鹏linux
💊个人社区:小鹏linux(个人社区)欢迎您的加入!
目录
1. Docker Hub
Docker Hub(如下图)是由Docker公司维护的一个注册中心。它拥有成千上万个镜像可供下载和运行。任何Docker用户都可以在上面创建免费账号及公共Docker镜像。除了用户提供的镜像,上面还维护着一些作为参考的官方镜像。 |
镜像受用户认证的保护,同时具有一个与GitHub类似的支持率打星系统。 这些官方镜像的表现形式可能是Linux发行版,如Ubuntu或Cent OS,或是预装软件包,如Node.js,或是完整的软件栈,如WordPress。 |
仓库(Repository)是集中存放镜像的地方,分公共仓库和私有仓库。一个容易与之混淆的概念是注册服务器(Registry)。实际上注册服务器是存放仓库的具体服务器,一个注册服务器上可以有多个仓库,而每个仓库下面可以有多个镜像。从这方面来说,可将仓库看做一个具体的项目或目录。例如对于仓库地址private- docker.com/ubuntu来说,private-docker.com是注册服务器地址,ubuntu是仓库名。 |
1.1 Docker Hub注册和登录
构建镜像中很重要的一环就是如何共享和发布镜像。可以将镜像推送到Docker Hub或者用户自己的私有Registry中。为了完成这项工作,需要在Docker Hub上创建一个账号,可以从 https://hub.docker.com/account/signup/加入Docker Hub |
首先需要注册一个账号,并在注册之后通过收到的确认邮件进行激活。 下面就可以测试刚才注册的账号是否能正常工作了。要登录到Docker Hub,可以使用docker login命令 |
[root@localhost ~]# docker login Username: jamtur01 Password: Email: james@lovedthanlost.net Login Succeeded
这条命令将会完成登录到Docker Hub的工作,并将认证信息保存起来以供后面使用。可以使用docker logout命令从一个Registry服务器退出。 登录成功的用户可以上传个人制造的镜像。 |
1.2 从官方仓库进行镜像拉取
用户无需登录即可通过docker search命令来查找官方仓库中的镜像,并利用docker pull命令来将它下载到本地。 根据是否为官方提供,可将这些镜像资源分为两类。一种是类似centos这样的基础镜像,称为基础或根镜像。这些镜像是由Docker公司创建、验 证、支持、提供。这样的镜像往往使用单个单词作为名字。 还有一种类型,比如ansible/centos7-ansible镜像,它是由Docker用户ansible创建并维护的,带有用户名称为前缀,表明是某用户下的某仓库。可以通过用户名称前缀user_name/镜像名来指定使用某个用户提供的镜像。 |
另外,在查找的时候通过-s N参数可以指定仅显示评价为N星以上的镜像。 下载官方centos镜像到本地,如下所示: |
[root@localhost ~]# docker pull centos Pullingrepositorycentos 0b443ba03958:Downloadcomplete 539c0211cd76:Downloadcomplete 511136ea3c5a:Downloadcomplete 7064731afe90:Downloadcomplete
用户也可以在登录后通过docker push命令来将本地镜像推送到Docker Hub |
1.3 自动创建
Ansible是知名自动化部署配置管理工具。 |
自动创建(Automated Builds)功能对于需要经常升级镜像内程序来说,十分方便。有时候,用户创建了镜像,安装了某个软件,如果软件发布新版本则需要手动更新镜像。 而自动创建允许用户通过Docker Hub指定跟踪一个目标网站(目前支持 GitHub或BitBucket)上的项目,一旦项目发生新的提交,则自动执行创建。 |
要配置自动创建,包括如下的步骤: 1)创建并登录Docker Hub,以及目标网站;*在目标网站中连接帐户到Docker Hub; 2)在Docker Hub中配置一个“自动创建”; 3)选取一个目标网站中的项目(需要含Dockerfile)和分支; 4)指定Dockerfile的位置,并提交创建。之后,可以在Docker Hub的“自动创建”页面中跟踪每次创建的状态。 |
2. 阿里云镜像市场
国内不少云服务商都提供了Docker镜像市场,下面阿里云镜像站为例,介绍如何使用这些市场。 |
2.1 查看镜像
访问https://developer.aliyun.com/mirror/,即可看到已存在的仓库和存储的镜像,包括Ubuntu、Java、Mongo、MySQL、Nginx等热门仓库和镜像。阿里云官方仓库中的镜像会保持跟DockerHub中官方镜像的同步。 |
以CentOS仓库为例,其中包括了centos6、centos7和centos8等镜像 |
2.2 下载镜像
以在linux中下载CentOS基础镜像为例: |
1. 备份yum源: |
[root@localhost ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2. 下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/ centos8(centos6官方源已下线,建议切换centos-vault源) |
[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
或者: |
[root@localhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
centos7: |
[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
或者: |
[root@localhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
centos6(centos6官方源已下线,建议切换centos-vault源) |
[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-6.10.repo
或者: |
[root@localhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-6.10.repo
3. 搭建本地私有仓库
3.1 使用registry镜像创建私有仓库
安装Docker后,可以通过官方提供的registry镜像来简单搭建一套本地私有仓库环境: |
[root@localhost ~]# docker run -d -p 5000:5000 registry
这将自动下载并启动一个registry容器,创建本地的私有仓库服务。 默认情况下,会将仓库创建在容器的/tmp/registry目录下。可以通过-v参数来将镜像文件存放在本地的指定路径。 |
[root@localhost ~]# docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registryregistry
3.2 Harbor-企业级docker私有仓库
准备环境: |
[root@localhost ~]# python #查看python环境,必须是2.7或更高版本
docker引擎应为1.10或更高版本 docker compose 为1.6.0或更高版本 实验步骤: |
[root@localhost ~]# rz #上传harbor-offline-installer-v1.2.0.tgz压缩包 [root@localhost ~]# tar xf harbor-offline-installer-v1.2.0.tgz #解压缩 [root@localhost ~]# mv harbor /usr/local/ [root@localhost ~]# cd /usr/local/harbor/ [root@localhost harbor]# ls #查看 [root@localhost harbor]# vim harbor.cfg #打开配置文件,进行如下修改
1.将hostname = reg.mydomain.com仓库地址修改为hostname = hub.anxiaopeng.com 2.将ui_url_protocol = http协议修改为ui_url_protocol = https 加密协议 3.将db_password = root123数据库密码修改为db_password = axp123456 4.max_job_workers = 3为同时只能从仓库下载3个镜像,根据需求修改 查看到配置文件中的ssl_cert = /data/cert/server.crt和ssl_cert_key = /data/cert/server.key证书密钥私钥文件路径为/data/cert,所以 |
[root@localhost harbor]# mkdir -p /data/cert #创建证书存放路径 [root@localhost cert]# chmod -R 777 /data/cert [root@localhost cert]# openssl genrsa -des3 -out server.key 2048 #创建私钥,设置两次密码为123456 [root@localhost cert]# openssl req -new -key server.key -out server.csr #然后输入私钥密码和其他信息 [root@localhost cert]# cp server.key server.key.org #备份私钥 [root@localhost cert]# openssl rsa -in server.key.org -out server.key #退密码处理,将server.key的密码取消掉 [root@localhost cert]# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt [root@localhost cert]# cd -
在windows的hosts文件中添加192.168.232.165 hub.anxiaopeng.com |
[root@localhost harbor]# ./install.sh
浏览器访问192.168.232.165,输入账号admin密码Harbor12345登录 一个项目下可以存放很多个镜像,而且镜像可以是不同的。 |
[root@localhost harbor]# docker images #查看本地镜像 [root@localhost harbor]# docker tag centos:centos7.9.2009 hub.anxiaopeng.com/library/centos:centos7.9.2009 #在项目中标记镜像 [root@localhost harbor]# vim /etc/hosts #添加: 192.168.232.165 hub.anxiaopeng.com [root@localhost harbor]# vim /etc/docker/daemon.json #打开配置文件,修改内容,添加信任域名,注意不要加协议,注意逗号。
原内容: |
{"registry-mirrors": ["https://kfp63jaj.mirror.aliyuncs.com"]}
修改后: |
{ "registry-mirrors": ["https://kfp63jaj.mirror.aliyuncs.com"], "insecure-registries":["hub.anxiaopeng.com"] }
[root@localhost harbor]# docker login hub.anxiaopeng.com #输入账号admin和密码Harbor12345进行认证(docker logout hub.anxiaopeng.com可以移除认证) [root@localhost harbor]# docker push hub.anxiaopeng.com/library/centos:centos7.9.2009 #推送镜像到项目
刷新浏览器就可以看到镜像上传成功了。标签书代表子版本的个数。此方法上传的镜像是公开的,任何人不需要登录就可以直接访问到下载的url 如果公司内部需要,则给不同的不能创建不同的普通用户,每个部门通过各自的普通用户进行上传和下载镜像。 |
👑👑👑结束语👑👑👑