初探镜像管理:写给初学者!


Cloud Native
ESG服务BU云原生交付中心、云基地
在云原生上的尝试、调研与分享
本期作者
朱志强
热爱技术,热爱生活
在此前的云原生项目中有这样一个需求——需要在项目管理平台上集成JFrog的一些功能。而在调研的过程中,我们发现JFrog的jcr版本是支持建立Docker仓库的,自然对镜像的管理(如增删改查)就成为了不可或缺的部分!
以此为背景,本期推文我们就以JFrog Artifactory的jcr版本为基础,用一个小案例简要介绍如何对Docker镜像进行管理。
Docker镜像管理
Docker仓库
本地Docker仓库是可以部署和托管内部Docker镜像的地方。
实际上,它是一个Docker注册表,能够托管被标记的Docker镜像集合,这些镜像就组成了Docker仓库。
而JFrog的jcr版本是支持建立上述Docker仓库。这里首先我们需要使用 JFrog Artifactory 的 jcr 版本,该版本的安装、启动在之前的文章中已经介绍过了。
镜像管理实例
Step 1: 新建仓库
新建一个 Docker 类型的仓库,具体下图所示:
/ 新建Repositories
/ 选择Docker类型
Step 2:修改Docker配置文件
使用下面的命令:
vim /etc/docker/daemon.json
在进入vim编辑器后,新增以下内容(以ip:port的方式添加json):
{"insecure-registries":["127.0.0.1:8081","192.168.253.132:8081"]
}
{
"registry-mirrors": ["https://ustc-edu-cn.mirror.aliyuncs.com"]
}
/ 在vim中的具体操作
注:
-
192.168.253.132:8081:是我自己的虚拟机开启JFrog服务的地址和端口号。
-
https://ustc-edu-cn.mirror.aliyuncs.com:是中科大的daocloud仓库。
使用wq命令保存退出后,使用以下命令重新加载配置以及重启Docker:
systemctl daemon-reload && systemctl restart docker
Step 3:登入Artifactory
在执行此步骤前,请先确认虚拟机已经安装Docker。可执行以下命令,查看Docker是否已被安装:
docker --version
/ 已安装Docker
使用以下命令在Docker服务器上登录Artifactory:
docker login 192.168.253.132:8081
user:自己的用户名
password:自己的密码
第一次登录会提示输入用户名和密码,按回车键登录。
由于我已经登录成功了,所以只有Succeeded的提示。
/ 已登入成功
Step 4:编辑Dockerfile文件
下面我们需要在当前目录下(我自己的是root目录),新建一个文件夹,再新建一个名为Dockerfile的文件。
首先查看当前目录:
pwd
/ 查看当前目录
执行以下命令,来新建文件夹以及文件:
mkdir test-docker
cd test-docker
touch Dockerfile
建好之后,cd进入test-docker目录下,使用以下命令进入vim编辑器对Dockerfile文件进行编辑:
/ 编辑Dockerfile
编辑的具体内容如下:
/ 编辑内容
接着在test-docker目录下,新建文件,新建文件名需和Dockerfile文件中三行ADD后的文件名保持一致:
touch jdk-8-linux-x64.tar.gz
touch apache-tomcat-8.tar.gz
touch server.xml
/ 新建文件
touch命令建的是空文件,需要将下载好的apache-tomcat-8.tar.gz文件与jdk-8-linux-x64.tar.gz文件移动到test-docker目录下(推荐使用Xftp工具操作):
/ 将文件移动到空文件下
注:以上添加文件的过程,只是为了添加构建镜像前的源文件而已,并非一定要这些文件。实质上放一个txt文件也可以将其打成镜像,在Dockerfile文件中进行声明即可。
Step 5:构建Docker镜像
使用以下命令对Docker进行构建:
docker build . -t zhuzqc
注:zhuzqc是镜像名。
/ 构建成功
再给自己生成的镜像增加一个tag标签:
docker tag zhuzqc 192.168.253.132:8081/test-one/zhuzqc:one
上传(push)到 JFrog Artifactory :
docker push 192.168.253.132:8081/test-one/zhuzqc:one
push成功后如下图所示:
/ push成功
于是,我们就可以在JFrog Artifactory中查看镜像的相关信息,且能够看到所有的文件层信息。
/ 在JFrog Artifactory中查看镜像信息
最后,可以查看在虚拟机中是否可以对JFrog中的镜像文件进行pull操作:
docker pull 192.168.253.132:8081/test-one/zhuzqc:one
docker images
/ 本地虚拟机对JFrog中的镜像文件进行pull操作
至此,在本地虚拟机上对JFrog Artifactory的镜像操作(push&pull)就已经完成了。