Docker 镜像缓存

简介: Docker 镜像缓存

Step中镜像缓存

kind: pipeline
type: docker
name: production deploy
clone:
  disable: true
steps:
  - name: clone & auto tag
    image: alpine/git:v2.32.0
    environment:
      SSH_KEY:
        from_secret: deploy_key
    commands:
    ...
  - name: build
    image: plugins/docker:20.10.9
    settings:
    ...
  - name: deploy
    image: appleboy/drone-ssh:1.6.3
    settings:
      host: xxx.xxx.xxx.xxx
      username: ubuntu
      password:
        from_secret: server_ubuntu_password
      port: 22
      script:
        - cd /home/ubuntu/code && docker-compose pull
        - cd /home/ubuntu/code && docker-compose up -d
        - docker image prune -f点击复制复制失败已复制


Dockerfile构建缓存

官方文档

Note

这里需要使用 Drone 的管理员账户,如果 Drone 初始化的时候没有管理员账号,要重新装。


首先要在 Drone 中开启这个项目的 Trusted 配置,因为使用外部 Docker 是一件非常有风险的事情,因此 Drone 设置为只允许受信任的应用访问外部 Docker

开启Trusted.png


- name: build
    image: docker:dind
    volumes:
      - name: dockersock
        path: /var/run/docker.sock
    commands:
      - docker ps -a
      - docker build --no-cache -t ip2region .
volumes:
- name: dockersock
  host:
    path: /var/run/docker.sock点击复制复制失败已复制


采坑

如果想在宿主机的 Docker 中使用 Drone 的变量,需要特殊处理,因为 docker:dindcommands 有格式问题,正常情况下使用如下的配置即可:

- name: build
    image: docker:dind
    volumes:
      - name: dockersock
        path: /var/run/docker.sock
    commands:
      - docker build --no-cache -t dawen-master:${DRONE_TAG##v} .
      - docker tag dawen-master:${DRONE_TAG##v} registry.cn-hangzhou.aliyuncs.com/9xing/dawen-master:${DRONE_TAG##v}
      - docker push registry.cn-hangzhou.aliyuncs.com/9xing/dawen-master:${DRONE_TAG##v}
      - docker tag registry.cn-hangzhou.aliyuncs.com/9xing/dawen-master:${DRONE_TAG##v} registry.cn-hangzhou.aliyuncs.com/9xing/dawen-master:latest
      - docker push registry.cn-hangzhou.aliyuncs.com/9xing/dawen-master:latest点击复制复制失败已复制


但是,这种配置虽然没有语法上的问题,可 Drone 却说配置格式不正确!如下所示:

Drone配置不正确提示.png


个人认为这个是 Drone 的一个 Bug ,但是该用还是得使用,采用 echo 的方式来临时解决,相信未来可以不用这么麻烦,笔记记录时间:2022年1月4日

- name: build
    image: docker:dind
    volumes:
      - name: dockersock
        path: /var/run/docker.sock
    commands:
      - docker build --no-cache -t dawen-master:`echo c194a9eg<!-- begin-inline-katex{DRONE_TAG##v}` .
      - docker tag dawen-master:`echo end-inline-katex-->{DRONE_TAG##v}` registry.cn-hangzhou.aliyuncs.com/9xing/dawen-master:`echo c194a9eg<!-- begin-inline-katex{DRONE_TAG##v}`
      - docker push registry.cn-hangzhou.aliyuncs.com/9xing/dawen-master:`echo end-inline-katex-->{DRONE_TAG##v}`
      - docker tag registry.cn-hangzhou.aliyuncs.com/9xing/dawen-master:`echo ${DRONE_TAG##v}` registry.cn-hangzhou.aliyuncs.com/9xing/dawen-master:latest
      - docker push registry.cn-hangzhou.aliyuncs.com/9xing/dawen-master:
目录
相关文章
|
1月前
|
前端开发 关系型数据库 MySQL
IDEA集成Docker插件打包服务镜像与运行【附Docker命令汇总】
IDEA集成Docker插件打包服务镜像与运行【附Docker命令汇总】
|
2月前
|
网络协议 数据安全/隐私保护 Docker
Docker 镜像库国内加速的几种方法
Docker 镜像库国内加速的几种方法
|
6天前
|
应用服务中间件 Docker 容器
docker 镜像常用命令
docker 镜像常用命令
24 0
|
14天前
|
存储 Kubernetes API
Docker拉取镜像或者kubectl出现的这个解决方案x509: certificate signed by unknown authority
Docker拉取镜像或者kubectl出现的这个解决方案x509: certificate signed by unknown authority
39 2
|
15天前
|
Linux Docker 容器
Linux彻底卸载Docker包括运行拉取的镜像
Linux彻底卸载Docker包括运行拉取的镜像
19 1
|
19天前
|
Docker 容器
docker删除镜像
docker删除镜像
51 0
|
28天前
|
网络安全 Docker 容器
docker 拷贝本地镜像
【2月更文挑战第27天】
|
29天前
|
SQL 关系型数据库 数据库
docker如何进入镜像其他的SQL
【2月更文挑战第25天】
|
1月前
|
存储 Ubuntu Shell
mac docker镜像在哪个文件夹
【2月更文挑战第22天】
|
1月前
|
Ubuntu Docker 容器
Docker镜像管理
Docker镜像管理
83 0