当前位置: 首页 > article >正文

docker (镜像分层、阿里云镜像推送/拉去)-day02

一、镜像概念

Docker 镜像是 Docker 容器的基础,它提供了一种可重复使用的、跨平台的部署方式,使得应用程序的部署和运行变得简单和高效。

把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等),打包好的运行环境就是image镜像文件。

 二、分层镜像

2.1 镜像的底层原理(联合文件系统)

Docker 镜像的底层原理是联合文件系统(UnionFS)。联合文件系统是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层一层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。

Docker 镜像实际上由一层一层的文件系统组成,这种层级的文件系统就是联合文件系统。在 Docker 镜像中,最底层是引导文件系统(bootfs),它主要包含引导加载器和内核。当引导加载完成之后,整个内核就都在内存中了,此时内存使用权已由 bootfs 转交给内核,此时系统也会卸载 bootfs。

在 bootfs 之上的层级是 rootfs(root file system),它包含的是典型 Linux 系统中的 /dev、/proc、/bin、/etc 等标准目录和文化。rootfs 就是各种不同的操作系统发行版,比如 Ubuntu、Centos 等。

联合文件系统使得 Docker 镜像可以分层进行继承,基于基础镜像,可以制作各种具体的应用镜像。这种分层的好处是共享资源、方便复制迁移,从而能够提高效率,减少空间占用,方便维护更新。

2.2 为什么docker镜像使用分层结构

Docker镜像层都是只读的,容器层是可写的。当容器启动时,一个新的可写层被加载到镜像的顶部。 这一层通常被称作“容器层”,“容器层”之下的都叫“镜像层”。

所有对容器的改动 。无论添加、删除、还是修改文件都只会发生在容器层中。只有容器层是可写的,容器层下面的所有镜像层都是只读的。
 

  三、docker镜像commit操作案例(重点)

 由此看出docker镜像分层,支持通过现有的镜像,生成新的镜像,在原有基础上扩展。

docker commit 提交容器副本使之成为一个新的镜像:

docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]

示范:
docker commit -m="vim install ok" -a="syf" f49f1addd673  syf/mybuntun1.0

 如图:ubuntu 容器中,没有vim 命令

[root@syf ~]# docker run -it --name myubuntu ubuntu /bin/bash
root@f49f1addd673:/# ls
bin  boot  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@f49f1addd673:/# vim a.txt
bash: vim: command not found

安装vim 

更新ubuntu 包管理工具
apt-get update
安装vim
apt-get -y install vim

 commit 我们安装vim 的ubuntu镜像

[root@syf ~]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS         PORTS     NAMES
f49f1addd673   ubuntu    "/bin/bash"   44 minutes ago   Up 5 minutes             myubuntu
[root@syf ~]# docker commit -m="vim install ok" -a="syf" f49f1addd673  syf/mybuntun1.0

查看结果

[root@syf ~]# docker images
REPOSITORY        TAG       IMAGE ID       CREATED              SIZE
syf/mybuntun1.0   latest    5166bfe283d8   About a minute ago   189MB
tomcat            latest    fb5657adc892   23 months ago        680MB
redis             latest    7614ae9453d1   23 months ago        113MB
ubuntu            latest    ba6acccedd29   2 years ago          72.8MB

 四、阿里云镜像仓库创建

4.1今日阿里云,左上角菜单栏鼠标放上去展开,搜索容器镜像服务

 4.2创建个人实例

4.3   创建命名空间

4.4在创建好的空间下,新建仓库 

4.5 选择本地仓库

最后阿里云会生成一堆命令,copy使用就行。

五、阿里云镜像推送和拉去(重点)

5.1 先登录:docker login --username=测试账号 registry.cn-shanghai.aliyuncs.com

[root@syf ~]# docker login --username=测试账号 registry.cn-shanghai.aliyuncs.com
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

5.2  打个tag

docker tag [ImageId] registry.cn-shanghai.aliyuncs.com/ceshi_resposity/myubuntu:[镜像版本号]

[root@syf ~]# docker images
REPOSITORY        TAG       IMAGE ID       CREATED         SIZE
syf/mybuntun1.0   latest    5166bfe283d8   2 hours ago     189MB
tomcat            latest    fb5657adc892   23 months ago   680MB
redis             latest    7614ae9453d1   23 months ago   113MB
ubuntu            latest    ba6acccedd29   2 years ago     72.8MB
[root@syf ~]# docker tag 5166bfe283d8 registry.cn-shanghai.aliyuncs.com/ceshi_resposity/myubuntu:1.0

 5.3  推送到阿里云仓库

docker push registry.cn-shanghai.aliyuncs.com/ceshi_resposity/myubuntu:[镜像版本号]

[root@syf ~]# docker push registry.cn-shanghai.aliyuncs.com/ceshi_resposity/myubuntu:1.0

5.4从阿里云上拉去镜像 

docker pull registry.cn-shanghai.aliyuncs.com/ceshi_resposity/myubuntu:[镜像版本号]

[root@syf ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
tomcat       latest    fb5657adc892   23 months ago   680MB
redis        latest    7614ae9453d1   23 months ago   113MB
ubuntu       latest    ba6acccedd29   2 years ago     72.8MB
[root@syf ~]# docker pull registry.cn-shanghai.aliyuncs.com/ceshi_resposity/myubuntu:1.0
1.0: Pulling from syf_resposity/myubuntu
7b1a6ab2e44d: Already exists 
1ec782c8d5e1: Pull complete 
Digest: sha256:c6d759583840a80c82c0704858b8c0f84e1daf5883db9521446f6cc8c1cc9ec0
Status: Downloaded newer image for registry.cn-shanghai.aliyuncs.com/syf_resposity/myubuntu:1.0
registry.cn-shanghai.aliyuncs.com/ceshi_resposity/myubuntu:1.0
[root@syf ~]# docker images
REPOSITORY                                                 TAG       IMAGE ID       CREATED         SIZE
registry.cn-shanghai.aliyuncs.com/syf_resposity/myubuntu   1.0       5166bfe283d8   2 hours ago     189MB
tomcat                                                     latest    fb5657adc892   23 months ago   680MB
redis                                                      latest    7614ae9453d1   23 months ago   113MB
ubuntu                                                     latest    ba6acccedd29   2 years ago     72.8MB


http://www.kler.cn/a/157400.html

相关文章:

  • Elasticsearch-分词器详解
  • Redis常见阻塞原因总结
  • imu相机EKF
  • 彻底认识和理解探索分布式网络编程中的SSL安全通信机制
  • 【Prompt Engineering】7 聊天机器人
  • OpenGL ES 01 渲染一个四边形
  • Kontakt v7.7.2(音频采样器)
  • Golang实践录:读取xml配置文件
  • 基于mps的pytorch 多实例并行推理
  • C语言--每日选择题--Day35
  • Apache Sqoop使用
  • 详细学习Pyqt5的9种显示控件
  • vue找依赖包的网址
  • 数据结构和算法专题---2、算法思想
  • Logstash使用指南
  • Kubernetes学习笔记-Part.04 资源规划
  • 谈谈压测方案的那点事
  • 很全面 影响无人机自动返航的因素总结
  • py读取本地文件
  • tcpdump使用心得
  • Redis部署-哨兵模式
  • 二、sql绕过过滤
  • PTA 7-224 sdut-C语言实验-排序问题
  • C++ 设计模式 Forward Declaration Pimpl
  • [传智杯 #3 练习赛] 单位转换
  • 绝密人性天书