跳转至

镜像 - 仓库

1 仓库

1.1 私有仓库 docker-registry 安装部署

  1. 拉取 registry 镜像:docker pull registry
  2. 启动 registry 容器:docker run -d -p 5000:5000 --restart=always --name registry registry
    1. registry 容器需要访问 5000 端口,宿主机任意端口绑定容器内 5000 端口
    2. --restart=alway 指定容器在 exit 后,能够重新启动
    3. 仓库默认会在/var/lib/registry 下,通过 -v /local-dir:/var/lib/registry 来修改位置
  3. 现在默认仓库地址是 127.0.0.1:5000

1.1.1 修改使用内网仓库地址

  1. 修改配置文件 vi /etc/docker/daemon.json
  2. 增加:"insecure-registries": ["内网ip:5000"]
  3. 现在同一网段内的其它机器都能通过 内网ip:port/镜像名:tag 来访问镜像

1.1.2 修改默认仓库地址

  1. 修改配置文件 vi /etc/docker/daemon.json
  2. 增加:ADD_REGISTRY='--add-registry 内网ip:5000'

1.2 推送镜像到仓库

  1. 给镜像打标签:docker tag 镜像id registry地址:端口/镜像名:标签
  2. 推送到仓库:docker push registry地址:端口/镜像名:标签 `
  3. 其它 docker 节点上拉取镜像:docker pull registry地址:端口/镜像名:标签
  4. 示例
$ docker tag 846e0e5335bb 10.30.12.17:5000/fio:3.7
$ docker push 10.30.12.17:5000/fio:3.7
The push refers to repository [10.30.12.17:5000/fio]
688ef2cc21ed: Pushed 
fb82b029bea0: Mounted from apache/zookeeper 
3.7: digest: sha256:9cef282efdf8c18e5057821dd085d84de2f9da4a24c008373794749e4fe76364 size: 741
# 在另一台docker节点上执行拉取镜像
$ docker pull heredata/fio:3.7

1.3 查看私有仓库镜像列表

  • 语法:curl registrIp:port/v2/_catalog
  • 示例:以下查询到有 3 个镜像 zookeeper、centos、ubuntu
$ curl 127.0.0.1:5000/v2/_catalog
{"repositories":["apache/zookeeper","centos","ubuntu"]}

1.4 查看私有镜像标签

  • 语法:curl registrIp:port/v2/镜像名/tags/list
  • 示例
$ curl 127.0.0.1:5000/v2/apache/zookeeper/tags/list
{"name":"apache/zookeeper","tags":["v3.4.5","v3.4.14"]}

2 构建镜像

2.1 查看镜像分层大小

  • docker history 镜像id
  • 示例
$ docker history afb6fca791e0
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
afb6fca791e0        2 years ago         /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B                  
<missing>           2 years ago         /bin/sh -c #(nop)  LABEL org.label-schema.sc…   0B                  
<missing>           2 years ago         /bin/sh -c #(nop) ADD file:72b194edf3abedf51…   203MB 

2.2 commit 从容器中构建镜像

2.3 build 从 Dockerfile 构建镜像

  • 语法:docker build [OPTIONS] PATH | URL | - (注意:PATH 是 dockerfile 文件所在的路径)
  • -f path : 指定要使用的 Dockerfile 路径,默认名是 PATH/Dockerfile
  • -t name:tag : 设置镜像的名字或便签,格式 name:tag
  • 示例: 最后的 . 表示在当前路径下找 dockerfile 文件
$ docker build -f my_ubuntu3 -t my_ubuntu:20.04 .