Docker image Registry 镜像 仓库
docker images
docker镜像含有启动容器所需的文件系统及其内容,因此其用于创建并启动docker容器。才用分成构建机制,最底层为bootfs、其之为rootfs。
bootfs 用于系统引导的文件系统,包括 bootloader 和 kernel ,容器启动完成后会被卸载以节约内存资源。
rootfs 位于bootfs 之上,表现为docker容器的根文件系统;传统模式中系统启动之时内核挂载rootfs时会首先将其挂在为“只读”模式,完整性自检完成后将其重新挂载为读写模式。docker中rootfs由内核挂载为只读模式,而后通过“联合挂载”技术额外挂载一个“可写”层。
docker image layer
位于下层的镜像称之为父镜像(parent image),最底层的称为基础镜像(base image),最上层为可读写层,其下的均为只读层。
镜像的联合挂载依赖于文件系统的支持,aufs:advanced multi-layered unification filesystem 高级多层统一文件系统。用于为linux文件系统实现联合挂载。aufs是之前的UnionFS 的重新实现。aufs的竞争产品是overlayfs,overlayfs从3.18版本已近被收录进内核。docker的分层镜像除了aufs,docker还支持btrfs,devicemapper和vfs等,在Ubuntu系统下默认是aufs,CentOS是devicemapper。新版的docker已近支持overlayfs2,所以一般使用overlayfs 且技术比较成熟。overlayfs是一种二级文件系统,需要构建在本地的文件系统之上。
查看docker使用的文件系统:
docker info ... Storage Driver: overlay2 Backing Filesystem: xfs
Docker Registry
镜像做好之后应该一个统一存储的位置,这个统一存储的位置就叫做Docker Regisrty。启动容器时docker daemon 会试图从本地获取相关镜像,本地镜像不存在时将从Registry中下载该镜像并保存到本地。如果没有特别指定这个Registry 就是docker hub,如果要指明registry 必须在访问路径当中指明服务器地址。
docker镜像官网:https://hub.docker.com
从官网中下载镜像直接使用如:docker pull nginx:1.1 这样的命令即可。
下载第三方镜像
quay.io:
quay.io 这是一个第三方镜像仓库,在搜索栏中搜索就会有镜像列表,点进去的页面在右下角有镜像地址,使用如下地址下载。
docker pull quay.io/coreos/flannel:v0.10.0-amd64
下载镜像默认使用的是443端口。后面的 v0.10.0-amd64 是版本号,默认为latest,没有则自己选一个。这重格式为:
docker pull <registry>[:<port>]/[<namespace>/]<name>:<tag>
网易镜像加速:
https://c.163.com/hub#/m/home/
给镜像打标签:
docker tag nginx:1.1 nginx:1-1 给有标签的再创建一个引用
docker tag a151536ed5f5 nginx:1.1
查看docker运行的日志:
journalctl -u docker.service
上传镜像到仓库
上传镜像到官方的仓库:
登陆镜像仓库:默认登陆的是官网的镜像仓库。
[root@localhost ~]# docker login -uzhuqiyang Password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded
上传到阿里云仓库:
1、在阿里云注册创建账户:https://cr.console.aliyun.com
2、创建命名空间,再创建镜像仓库。
3、点击镜像右边的管理可以看到相关信息,包括如何上传和拉取镜像文件。
4、上传镜像需要登录阿里云镜像站点,仓库密码是单独设置的。
给镜像打标签:标签格式要符合要求。
docker tag zhuqiyang/nginx:1.1 registry.cn-qingdao.aliyuncs.com/zhuqiyang/nginx:1.1
登录:需要输入密码
docker login --username=hi31248421@aliyun.com registry.cn-qingdao.aliyuncs.com
上传:
docker push registry.cn-qingdao.aliyuncs.com/zhuqiyang/nginx:1.1
然后到镜像仓库就可以看到上传的镜像了。
打包和加载镜像:
打包:
docker save -o filename.gz image [image .....]
docker save -o image.gz zhuqiyang/nginx:1.1 registry.cn-qingdao.aliyuncs.com/zhuqiyang/nginx:1.1
-o 镜像名称
这个镜像可以传送到任意主机上,然后就可以加载使用。
加载:
docker load -i filename.gz
然后使用docker image ls 即可看到加载的镜像。