镜像 - 仓库
1 仓库
1.1 私有仓库 docker-registry 安装部署
- 拉取
registry
镜像:docker pull registry
- 启动
registry
容器:docker run -d -p 5000:5000 --restart=always --name registry registry
registry
容器需要访问 5000 端口,宿主机任意端口绑定容器内 5000 端口
--restart=alway
指定容器在 exit 后,能够重新启动
- 仓库默认会在/var/lib/registry 下,通过
-v /local-dir:/var/lib/registry
来修改位置
- 现在默认仓库地址是
127.0.0.1:5000
1.1.1 修改使用内网仓库地址
- 修改配置文件
vi /etc/docker/daemon.json
- 增加:
"insecure-registries": ["内网ip:5000"]
- 现在同一网段内的其它机器都能通过
内网ip:port/镜像名:tag
来访问镜像
1.1.2 修改默认仓库地址
- 修改配置文件
vi /etc/docker/daemon.json
- 增加:
ADD_REGISTRY='--add-registry 内网ip:5000'
1.2 推送镜像到仓库
- 给镜像打标签:
docker tag 镜像id registry地址:端口/镜像名:标签
- 推送到仓库:
docker push registry地址:端口/镜像名:标签
`
- 其它 docker 节点上拉取镜像:
docker pull registry地址:端口/镜像名:标签
- 示例
$ 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 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 .