docker images


        docker镜像含有启动容器所需的文件系统及其内容,因此其用于创建并启动docker容器。才用分成构建机制,最底层为bootfs、其之为rootfs。

        bootfs 用于系统引导的文件系统,包括 bootloader 和 kernel ,容器启动完成后会被卸载以节约内存资源。

        rootfs 位于bootfs 之上,表现为docker容器的根文件系统;传统模式中系统启动之时内核挂载rootfs时会首先将其挂在为“只读”模式,完整性自检完成后将其重新挂载为读写模式。docker中rootfs由内核挂载为只读模式,而后通过“联合挂载”技术额外挂载一个“可写”层。


docker image layer


        位于下层的镜像称之为父镜像(parent image),最底层的称为基础镜像(base image),最上层为可读写层,其下的均为只读层。

15387436152708_upload.png

15387433549720_upload.png

        镜像的联合挂载依赖于文件系统的支持,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 即可看到加载的镜像。