Docker(4)Docker镜像
文章目录
- 镜像是什么
- 是什么
- UnionFS(联合文件系统)
- 重点理解
- Docker镜像commit操作
- 上传到公有仓库
- 镜像仓库的创建
- 上传命令
- 拉取测试
- 私有仓库 Docker Registry
镜像是什么
是什么
是一种轻量级、可执行的独立软件包,它包含运行某个软件的所需的所有内容,
我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等),
这个打包好的运行环境就是image镜像文件。
UnionFS(联合文件系统)
UnionFS(联合文件系统):是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,
同时可以将不同目录挂在到同一个虚拟文件系统下。Union文件系统是Docker镜像的基础。镜像可以通过分层来集成,可以制作各种具体的应用镜像。
一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终形成一个对外暴露的服务实体。
重点理解
Docker镜像层都是只读的,容器层是可写的
当容器启动时,一个新的可写层被加载到镜像的顶部
这一层通常被称作"容器层",“容器层"之下的都叫"镜像层”
Docker镜像commit操作
官方的ubuntu镜像无法执行vim命令的,我们来升级一波
# 启动乌班图
docker run -it --name=ubuntu ubuntu bash
# 如果已经启动过了直接进入我们启动好的乌班图
docker exec -it ubuntu bash
# 下载vim
apt-get update
apt-get -y install vim
# ok 到这为止vim已经可以使用了
# commit容器
# docker commit -m='提交描述' -a="作者" 容器id或者容器名 容器名:版本号
docker commit -m='add vim cmd' -a="gtd" ubuntu gtd/ubuntu:1.0.1
上传到公有仓库
镜像仓库的创建
进入地址进行创建
阿里地址
如果实例还没有创建可以看这篇
Docker(2)Docker安装和加速器配置
进入后点击目录阿里云镜像加速 创建个人实例就可
命名空间创建
创建镜像仓库
点击之后填入范例
下一步后选择本地仓库
上传命令
点击创建后就会进入仓库实例,以下代码直接阿里云网站就可。每个人和每个人的代码都不一样
# docker登录
docker login --username=[] registry.cn-hangzhou.aliyuncs.com
# 拉取
docker pull registry.cn-hangzhou.aliyuncs.com/username/myubuntu2:[镜像版本号]
# 推送
docker push registry.cn-hangzhou.aliyuncs.com/username/myubuntu2:[镜像版本号]
# 完整的推送流程 直接复制阿里云的代码不用敲 改参数就可以记得去掉[]
docker login --username=[] registry.cn-hangzhou.aliyuncs.com
# ImageId 和 镜像版本号 通过命令 docker images 获取
docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/username/myubuntu2:[镜像版本号]
docker push registry.cn-hangzhou.aliyuncs.com/username/myubuntu2:[镜像版本号]
拉取测试
测试是否成功
# 删除原先镜像
docker rmi -f imageID
# 拉取 从阿里云复制
docker pull registry.cn-hangzhou.aliyuncs.com/username/myubuntu2:[镜像版本号]
# 跑
docker run -it ubuntu bash
私有仓库 Docker Registry
# 拉取registry镜像
docker pull registry
# 运行registry -v 本机位置:容器内位置
docker run -d -p 5000:5000 -v /usr/local/myregistry/:/usr/local/doregistry --privileged=true --name=registry registry
# 创建新的镜像
# 跑一个新的ubuntu
docker run -it --name=ubuntu ubuntu bash
# 给原始ubuntu 下载ifconfig
apt-get update
apt-get install net-tools
# commit容器
docker commit -m="ifconfig cmd add" -a="ttst" ubuntu ttstubuntu:1.1
# 查询私服库上有什么镜像
curl localhost:5000/v2/_catalog
# 改名(为了符合规范)
docker tag ttstubuntu:1.1 localhost:5000/ttstubuntu:1.1
# 修改docker配置
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://aa25jngu.mirror.aliyuncs.com"],
"insecure-registries":["localhost:5000"] # 设localhost:5000为安全
}
# push
docker push localhost:5000/ttstubuntu:1.1
# pull
docker pull localhost:5000/ttstubuntu:1.1
# 测试
docker images
# imageID 更具自己的来
docker run -it dfa28210cb46 bash
ifconfig