一、配置coding代码仓库和镜像仓库
1. 创建新项目
- 首页——项目——创建项目

- 选择devops项目,完成项目创建

2. 创建代码仓库
- 代码仓库——创建代码仓库

- 添加仓库信息,并创建仓库

- 按照提示初始化仓库

- 初始化完成后coding仓库如下所示

3. 创建制品仓库
- 按照提示创建docker镜像仓库,权限可以选公开

- 创建完成后会提示登录和拉取镜像命令

二、本地创建项目和文件
1. 创建dockerfile
- 在Dockerfile的FROM中写明拉取的镜像tag
bogon:docker_images cuiliang$ pwd
/Users/cuiliang/coding/docker_images
bogon:docker_images cuiliang$ ls
Dockerfile README.md
bogon:docker_images cuiliang$ cat Dockerfile
FROM centos:latest
2. 将本地仓库代码推送至coding远程仓库
bogon:docker_images cuiliang$ git add .
bogon:docker_images cuiliang$ git commit -m 'centos'
[master 0c41414] centos
1 file changed, 1 insertion(+)
create mode 100644 Dockerfile
bogon:docker_images cuiliang$ git push
枚举对象中: 4, 完成.
对象计数中: 100% (4/4), 完成.
使用 4 个线程进行压缩
压缩对象中: 100% (2/2), 完成.
写入对象中: 100% (3/3), 289 字节 | 144.00 KiB/s, 完成.
总共 3(差异 0),复用 0(差异 0),包复用 0
To https://e.coding.net/cuiliang0302/docker_images/docker_images.git
a3e9165..0c41414 master -> master
三、配置coding自动构建任务
1. 创建构建计划
- 持续集成——创建构建计划——选择Docker 镜像推送

- 配置构建计划

- 创建完成后,点击修改配置,将服务器节点设置为香港

- 修改触发规则为推送到master时触发构建

2. 手动执行构建,测试功能
- 点击手动构建,等待完成构建镜像

- 制品仓库查看镜像信息

- 按照提示本地拉取镜像并测试
# 按照提示,登录镜像仓库
bogon:docker_images cuiliang$ docker login -u 1554382111@qq.com cuiliang0302-docker.pkg.coding.net
Password:
Login Succeeded
# 拉取构建完成的镜像
bogon:docker_images cuiliang$ docker pull cuiliang0302-docker.pkg.coding.net/docker_images/docker_images/my-docker-image:latest
latest: Pulling from docker_images/docker_images/my-docker-image
7a0437f04f83: Pull complete
Digest: sha256:dbbacecc49b088458781c16f3775f2a2ec7521079034a7ba499c8b0bb7f86875
Status: Downloaded newer image for cuiliang0302-docker.pkg.coding.net/docker_images/docker_images/my-docker-image:latest
cuiliang0302-docker.pkg.coding.net/docker_images/docker_images/my-docker-image:latest
# 修改镜像tag
bogon:docker_images cuiliang$ docker tag cuiliang0302-docker.pkg.coding.net/docker_images/docker_images/my-docker-image:latest centos:latest
# 测试镜像
bogon:docker_images cuiliang$ docker run centos:latest cat /etc/redhat-release
CentOS Linux release 8.3.2011
四、拉取镜像流程演示
以拉取kube-state-metrics镜像为例,演示完成操作流程。
1. 尝试本地直接拉取镜像
bogon:docker_images cuiliang$ docker pull k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.0.0-rc.1
Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
2. 修改dockerfile,并将代码推送至coding远程仓库,触发自动构建
bogon:docker_images cuiliang$ ls
Dockerfile README.md
# 修改dockerfile,FROMkube-state-metrics镜像
bogon:docker_images cuiliang$ vim Dockerfile
bogon:docker_images cuiliang$ cat Dockerfile
FROM k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.0.0-rc.1
# 提交代码并推送远程仓库
bogon:docker_images cuiliang$ git add .
bogon:docker_images cuiliang$ git commit -m 'kube-state-metrics'
[master 859447c] kube-state-metrics
1 file changed, 1 insertion(+), 1 deletion(-)
bogon:docker_images cuiliang$ git push
枚举对象中: 5, 完成.
对象计数中: 100% (5/5), 完成.
使用 4 个线程进行压缩
压缩对象中: 100% (3/3), 完成.
写入对象中: 100% (3/3), 328 字节 | 164.00 KiB/s, 完成.
总共 3(差异 0),复用 0(差异 0),包复用 0
To https://e.coding.net/cuiliang0302/docker_images/docker_images.git
0c41414..859447c master -> master
3. 等待构建完成,收到邮件通知

4. 本地拉取镜像,修改tag
bogon:docker_images cuiliang$ docker pull cuiliang0302-docker.pkg.coding.net/docker_images/docker_images/my-docker-image:latest
latest: Pulling from docker_images/docker_images/my-docker-image
60775238382e: Pull complete
e3030d04a6a4: Pull complete
Digest: sha256:a13d8bb0013420d1dab20bddf8d64979702f010976958519449ee312218b3e68
Status: Downloaded newer image for cuiliang0302-docker.pkg.coding.net/docker_images/docker_images/my-docker-image:latest
cuiliang0302-docker.pkg.coding.net/docker_images/docker_images/my-docker-image:latest
bogon:docker_images cuiliang$ docker tag cuiliang0302-docker.pkg.coding.net/docker_images/docker_images/my-docker-image:latest k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.0.0-rc.1
五、拉取资源流程演示
dockerfile的ADD指令支持将远程URL资源拉取到本地,但是如果资源需要验证,或https访问,那么使用 RUN wget, RUN curl 或者其他工具。此处直接使用wget拉取一个github项目源码试试
1. 修改dockerfile,并将代码推送至coding远程仓库,触发自动构建
localhost:docker_images cuiliang$ ls
Dockerfile README.md
localhost:docker_images cuiliang$ cat Dockerfile
FROM busybox:latest
WORKDIR /tmp
RUN wget -P /tmp https://github.com/youzan/vant/archive/refs/heads/dev.zip
localhost:docker_images cuiliang$ git add .
localhost:docker_images cuiliang$ git commit -m 'dev.zip'
[master 3c3844f] dev.zip
1 file changed, 3 insertions(+), 1 deletion(-)
localhost:docker_images cuiliang$ git push
枚举对象中: 5, 完成.
对象计数中: 100% (5/5), 完成.
使用 4 个线程进行压缩
压缩对象中: 100% (3/3), 完成.
写入对象中: 100% (3/3), 374 字节 | 374.00 KiB/s, 完成.
总共 3(差异 0),复用 0(差异 0),包复用 0
To https://e.coding.net/cuiliang0302/docker_images/docker_images.git
859447c..3c3844f master -> master
2. 等待构建完成,收到邮件通知

3. 拉取镜像,提取资源
# 拉取最新镜像
localhost:docker_images cuiliang$ docker pull cuiliang0302-docker.pkg.coding.net/docker_images/docker_images/my-docker-image:latest
latest: Pulling from docker_images/docker_images/my-docker-image
f531cdc67389: Pull complete
46674a1face8: Pull complete
Digest: sha256:c346f688e9cf2f075562c210c7df3f0bdf2542271da32fd734b9745a8dbd3384
Status: Downloaded newer image for cuiliang0302-docker.pkg.coding.net/docker_images/docker_images/my-docker-image:latest
cuiliang0302-docker.pkg.coding.net/docker_images/docker_images/my-docker-image:latest
# 查看资源名称
localhost:docker_images cuiliang$ docker run cuiliang0302-docker.pkg.coding.net/docker_images/docker_images/my-docker-image:latest ls
dev.zip
# 查看容器ID
localhost:docker_images cuiliang$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
50e239ff9ca9 cuiliang0302-docker.pkg.coding.net/docker_images/docker_images/my-docker-image:latest "ls" 10 seconds ago Exited (0) 8 seconds ago gallant_germain
640a1b7e3e83 redis "docker-entrypoint.s…" 2 weeks ago Exited (255) 2 weeks ago 0.0.0.0:6379->6379/tcp redis
52ade65599b4 mysql "docker-entrypoint.s…" 3 weeks ago Exited (255) 2 weeks ago 0.0.0.0:3306->3306/tcp, 33060/tcp mysql
# 将容器资源拷贝到本地
localhost:docker_images cuiliang$ docker cp 50e239ff9ca9:/tmp/dev.zip .
localhost:docker_images cuiliang$ ls
Dockerfile README.md dev.zip