本文收录在容器技术学习系列文章总目录
1, 制作镜像
1.1 镜像的生成途径
基于容器制作
dockerfile,docker build
本篇主要详细讲解基于容器制作镜像; 基于 dockerfile 制作镜像在后一张文章 Docker 系列 07-Dockerfile 详解中详细介绍;
1.2 基于容器制作
docker commit
(1) 格式
Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
(2)Options 参数
-a, 作者 (例如,"along <along@along.com>")
-c, 修改 Dockerfile 指令应用于创建的镜像
-m, 提交消息
-p, 在提交期间暂停容器 (默认为 true)
(3) 示例 1: 简单的基于容器创建一个新的镜像
1 先运行一个容器
- [root@along ~]# docker run --name b1 -it busybox
- / # ls /
- bin dev etc home proc root sys tmp usr var
- / # mkdir -p /date/html
- / # echo "<h1>busybox httpd server</h1>"> /date/HTML/index.HTML
- / # cat /date/HTML/index.HTML
- <h1>busybox httpd server</h1>
2 不用退出这个容器, 另起终端在 b1 容器基础上, 制作新镜像
- [root@along ~]# docker commit -p b1
- sha256:3a6523b08bea7eb339ae04cc8a98caabfd46fbd27ccf31409cc3e8a764effdc1
- [root@along ~]# docker image ls
- REPOSITORY TAG IMAGE ID CREATED SIZE
- <none> <none> bf29b97ba38d 7 seconds ago 1.15 MB
3 给新制作的镜像打标签
- [root@along ~]# docker tag bf29b97ba38d along/httpd:v0.1
- [root@along ~]# docker image ls
- REPOSITORY TAG IMAGE ID CREATED SIZE
- along/httpd v0.1 bf29b97ba38d 39 seconds ago 1.15 MB
4 可以对同一个镜像, 再打标签
- [root@along ~]# docker tag along/httpd:v0.1 along/httpd:latest
- [root@along ~]# docker image ls
- REPOSITORY TAG IMAGE ID CREATED SIZE
- along/httpd latest bf29b97ba38d About a minute ago 1.15 MB
- along/httpd v0.1 bf29b97ba38d About a minute ago 1.15 MB
5 删除同一镜像的标签, 只是把这个镜像的标签去掉, 只到删除这个镜像的最后一个标签, 此镜像才会被删除
- [root@along ~]# docker image rmi along/httpd:latest
- Untagged: along/httpd:latest
- [root@along ~]# docker image ls
- REPOSITORY TAG IMAGE ID CREATED SIZE
- along/httpd v0.1 bf29b97ba38d About a minute ago 1.15 MB
6 基于新的镜像运行一个容器, 验证是否是基于 b1 创建成功的
- [root@along ~]# docker run --name b2 -it along/httpd:v0.1
- / # cat /date/HTML/index.HTML
- <h1>busybox httpd server</h1>
- / # exit
(4) 示例 2: 基于容器创建新的镜像, 并修改执行命令 CMD
1 基于容器 b1 创建新的镜像, 并修改命令为执行 httpd 服务
- [root@along ~]# docker commit -a "Along <along@along.com>" -c 'CMD ["/bin/httpd","-f","-h","/date/html"]' -p b1 along/httpd:v0.2
- sha256:2291d0e5800e53e120fad58043e97cbf8197f7db2aa1111508603fa3c16982f2
注解: busybox 中 httpd 语法
-f: 不运行为守护进程, 在前台运行
-h: 指定 httpd 运行的主目录
2 运行新的镜像 v0.2
- [root@along ~]# docker run --name b3 -d along/httpd:v0.2
- 43e8731be7abd34a9b332c84bc622a1ef8707dc94465d3639db194c0b504cc42
3 验证成功
- [root@along ~]# docker inspect b3 |grep "IPAddress"
- "SecondaryIPAddresses": null,
- "IPAddress": "172.17.0.3",
- "IPAddress": "172.17.0.3"
- [root@along ~]# curl 172.17.0.3
- <h1>busybox httpd server</h1>
2, 了解 Docker Registry
2.1 介绍
registry 用于保存 docker 镜像, 包括镜像的层次结构和元数据.
启动容器时, docker daemon 会试图从本地获取相关的镜像; 本地镜像不存在时, 其将从 registry 中下载该镜像并保存到本地;
拉取镜像时, 如果不知道 registry 仓库地址, 默认从 Docker Hub 搜索拉取镜像
2.2 分类
Sponsor Registry: 第三方的 registry, 供客户和 docker 社区使用;
mirror Registry: 第三方的 registry, 只让客户使用; 如 docker cn 和阿里云的镜像加速器;
vendor Registry: 服务商的 registry, 由发布 docker 镜像的供应商提供的 registry; 如红帽提供的专有的, 收费提供;
private Registry: 通过设有防火墙和额外的安全层的私有实体提供的 registry; 自建的 registry, 在本地搭建 registry, 节省带宽
2.3 registry 组成 (repository 和 index)
(1)Repository
由特定的 docker 镜像的所有迭代版本组成的镜像仓库;
一个 registry 中可以存在多个 repository:
repository 可分为 "顶层仓库" 和 "用户仓库"
用户仓库名称格式为 "用户名 / 仓库名"
每个仓库可以包含多个 Tag(标签), 每个标签对应一个镜像
(2)Index
维护用户账户, 镜像的校验以及公共命名空间的信息
相当于为 registry 提供了一个完成用户认证等功能的检索接口
2.4 拉取仓库镜像的格式
docker pull <registry>[:<port>]/[<namespace>/]<name>:<tag>
registry: 仓库服务器地址: 不指定默认是 docker hub
port: 端口; 默认是 443, 因为是 https 协议
namespace: 名称空间, 指是哪个用户的仓库, 如果是顶层仓库, 可省
name: 仓库名
tag: 标签名; 默认是 latest 版本
2.5 知名 docker 仓库
- https://hub.docker.com/
- https://quay.io/
例: docker pull quay.io/coreos/flannel:v0.10.0-amd64
3, 将制作的镜像上传到自己的私有 registry 仓库中
3.1 创建自己的 docker registry
(1) 可以在 docker hub 上创建; 但注册 docker hub 需要科学上网;
(2) 也可以在阿里云上创建自己的 docker 仓库
1 创建镜像仓库
2 选择创建本地仓库
3 点击管理, 会有操作指南, 大家跟着操作即可, 这里我就不再演示了
本文用的是 docker hub
3.2 登录 docker 仓库
- [root@along ~]# docker login -u alongedu
- Password:
- Login Succeeded
3.3 将镜像打标签, 对应自己的 registry
[root@along ~]# docker tag busybox:latest alongedu/httpd:v0.1
3.4 push 上传自己的镜像
- [root@along ~]# docker push alongedu/httpd:v0.1
- The push refers to a repository [docker.io/alongedu/httpd]
- 23bc2b70b201: Pushed
- v0.1: digest: sha256:cbcde3595079b1f7a6b046e96e7547fe786d5c2c8eba678bc260161bc01b8dbe size: 527
3.5 在自己的私有仓库验证
来源: https://www.cnblogs.com/along21/p/10253725.html